6个版本

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.1.0 2018年12月23日

#6 in #arr

Download history 14510/week @ 2024-03-14 15865/week @ 2024-03-21 17528/week @ 2024-03-28 18048/week @ 2024-04-04 16530/week @ 2024-04-11 18627/week @ 2024-04-18 15371/week @ 2024-04-25 18017/week @ 2024-05-02 20965/week @ 2024-05-09 21469/week @ 2024-05-16 17200/week @ 2024-05-23 25705/week @ 2024-05-30 23895/week @ 2024-06-06 23714/week @ 2024-06-13 23140/week @ 2024-06-20 20033/week @ 2024-06-27

95,925 每月下载量
46 个crate中使用 (通过 arr_macro)

MIT/Apache

6KB

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

数组宏有助于初始化数组。当初始化大于32个元素的数组或未实现copy或默认特质的类型数组时很有用。

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

有关此crate背后的动机的更多背景信息,请参阅这篇博客文章

使用方法

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