#fixed-size #string #str #fixed #size #array #proc-macro

无std fixed_len_str

一个过程宏,用于创建一个由固定大小数组支持的str智能指针,大小由令牌指定。

22个版本

0.3.3 2020年1月30日
0.3.2 2020年1月29日
0.2.9 2020年1月22日
0.1.9 2020年1月9日

#fixed中的第79


用于6个crate(2个直接使用)

无许可证

12KB
101

fixed_len_str

此Rust库提供了一种过程宏,用于声明一个包装结构体,该结构体的大小由令牌指定,可以解引用到str

有关长度为12的正确API文档,请参阅fixed_len_str_example

如果您想使用serde来序列化和反序列化fixed_len_str,请使用features = ["serde_support"],如果您想在str上匹配类型为FnMut(FixedStr$len) -> bool的模式,请使用features = ["pattern_pred_support"],并且如果您想在展开时查看文档,请使用default-features = false

用法

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::<Vec<&str>>(), ["aaa", "bb"]);
    }
}

依赖项

~170KB