7 个版本

0.2.1 2023年1月5日
0.2.0 2023年1月5日
0.1.3 2019年10月29日
0.1.2 2019年5月23日
0.0.1 2018年12月23日

#166Rust 模式

Download history 14521/week @ 2024-03-14 15890/week @ 2024-03-21 17526/week @ 2024-03-28 18046/week @ 2024-04-04 16528/week @ 2024-04-11 18645/week @ 2024-04-18 15371/week @ 2024-04-25 18024/week @ 2024-05-02 20982/week @ 2024-05-09 21467/week @ 2024-05-16 17193/week @ 2024-05-23 25723/week @ 2024-05-30 23897/week @ 2024-06-06 23717/week @ 2024-06-13 23148/week @ 2024-06-20 20016/week @ 2024-06-27

95,918 每月下载量
42 个包中使用了 (17 直接)

MIT/Apache

8KB

数组宏 构建状态 crates.io 徽章

数组宏帮助初始化数组。当初始化大于32个元素的数组,或者不实现 copy 或 default 特性的类型的数组时很有用。

数组宏完全使用安全的 Rust 实现。

要了解更多关于这个包背后的动机的背景信息,请查看这篇博客文章

使用方法

use arr_macro::arr;

fn main() {
    let x: [Option<String>; 3] = arr![None; 3];
    assert_eq!(
        [None, None, None],
        x
    );

    // works with all enum types (and impl copy is not required)
    #[allow(dead_code)]
    enum MyEnum {
        A,
        B
    }
    let _: [MyEnum; 33] = arr![MyEnum::A; 33];

    // Vec::new()
    let _: [Vec<String>; 33] = arr![Vec::new(); 33];

    // or your own struct type
    // and you can even use a counter to behave differently based on the array index
    #[derive(Debug)]
    struct MyStruct {
        member: u16,
    }
    impl MyStruct {
        fn new(member: u16) -> Self {
            MyStruct { member }
        }
    }
    let mut i = 0u16;
    let x: [MyStruct; 33] = arr![MyStruct::new({i += 1; i - 1}); 33];

    assert_eq!(0, x[0].member);
    assert_eq!(1, x[1].member);
    assert_eq!(2, x[2].member);
}

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确表示,否则根据 Apache-2.0 许可协议定义,任何有意提交以包含在作品中的贡献,都应如上所述双重许可,不附加任何额外条款或条件。

依赖项

~1.5MB
~36K SLoC