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
95,925 每月下载量
在 46 个crate中使用 (通过 arr_macro)
6KB
数组宏
数组宏有助于初始化数组。当初始化大于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版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确表示,否则根据Apache-2.0许可证定义的,任何有意提交以包含在你所创建的工作中的贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~1.5MB
~36K SLoC