# Procedural macros for str and byte str literals
[](https://spdx.org/licenses/MIT.html)
[](https://crates.io/crates/proc_strarray)
[](https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html)
[](https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html)
[](https://docs.rs/proc_strarray)
[](https://github.com/XAMPPRocky/tokei)
[](https://crates.io/crates/proc_strarray/versions)
## Create byte array from str or byte str
Procedural macro `proc_strarray::str_array` creates *const u8* array from _str_ literal.
Variant `proc_strarray::str_array0` creates zero terminated u8 array.
Macro *str_array* takes three arguments:
1. name of array to be created
1. str or byte str literal
1. expected length of str literal (optional argument, can be omitted).
Length is only used for length check. It will not trim or extend an array.
## Repeat str or byte str
1. macro `str_repeat` repeats str or byte str literal n times.
1. macro `str_repeat0` repeats str or byte str literal n times and adds NUL termination.
## Repeat str or byte str as bytes
1. macro `str_repeat_bytes` repeats str or byte str literal n times as byte
slice.
1. macro `str_repeat_bytes0` repeats str or byte str literal n times as byte
slice and adds NUL termination.
## Return str or byte str length
1. macro `str_len` returns length of str or byte str literal.
1. macro `str_len0` returns length of zero terminated str or byte str literal.
## Create byte slice from str or byte str
1. macro `str_bytes` creates byte slice from str or byte str literal.
1. macro `str_bytes0` creates zero terminated byte slice from str or byte str literal.
### Usage
```rust
// This code will create const array of u8
// named STRU from content of "stru" str literal.
use proc_strarray::str_array;
str_array!(STRU, "stru");
// check if newly created array have length 4
assert_eq!(STRU.len(), 4);
// check created array if first character is 's'
assert_eq!(STRU[0], 's' as u8);
```
## Documentation
rustdoc generated documentation can be found at [docs.rs](https://docs.rs/proc_strarray/latest/proc_strarray/index.html)
## License
proc_strarray uses [same MIT/APL2 dual license](https://www.rust-lang.org/policies/licenses) as Rust.
## MSRV
*MSRV 1.56* and it will stay for all 1.X versions.