# fixed_len_str This Rust library provides a procedural macro for declare a wrapper struct for an array with the size given by the tokens which derefs to [`str`]. For a proper API documentation of one of length 12 see [fixed_len_str_example]. If you want to use [serde] to serialize and deserialize the fixed_len_str use `features = ["serde_support"]`,if you want to match a pattern of type `FnMut(FixedStr$len) -> bool` on a [`str`] use `features = ["pattern_pred_support"]` and if you want the documentation visible at the expansion use `default-features = false`. # Usage ```rust use fixed_len_str::fixed_len_str; fixed_len_str!(3); fn main() { let string = FixedStr3::from("abc"); assert_eq!(string, "abc"); let string = unsafe { FixedStr3::new_unchecked(*b"abc") }; assert_eq!(string, "abc"); let mut string = FixedStr3::default(); // equivalent to mem::zeroed but safe string.fill_str("abc"); assert_eq!(string, "abc"); let mut string = unsafe { FixedStr3::new_unchecked([b'a', b'b', 0]) }; assert_eq!(string, "ab"); string.fill_char('c'); assert_eq!(string, "abc"); assert_eq!(string.as_bytes(), (&string[..]).as_bytes()); // this is only certain with non-zero bytes assert_eq!(string.into_string(), String::from(&string[..])); // clone or consume at your option assert_eq!(FixedStr3::from(&[][..]), ""); if cfg!(feature = "pattern_pred_support") { use fixed_str3::Closure; // needed due to the orphan rule assert_eq!("aaabb".matches(Closure::from(|s: FixedStr3| s == "aaa" || s == "bb")) .collect::>(), ["aaa", "bb"]); } } ``` [`str`]: https://doc.rust-lang.org/std/primitive.str.html [fixed_len_str_example]: https://docs.rs/fixed_len_str_example/ [serde]: https://crates.io/crates/serde