1个稳定版本
1.0.0 | 2024年4月24日 |
---|
#256 在 配置
每月324次下载
用于 spawn64
17KB
101 行
const_array_init
Rust crate
使用闭包语法或const函数初始化const上下文中数组的宏。
该crate中的所有宏都是使用macro_rules!
实现的,这是一种非常IDE友好的方法。
示例
使用const_arr!
宏
use const_array_init::const_arr;
const ARR1: [i32; 5] = const_arr!([i32; 5], |i| i as i32 + 1);
assert_eq!(ARR1, [1, 2, 3, 4, 5]);
const fn to_i32_plus_one(n: usize) -> i32 {
n as i32 + 1
}
const ARR2: [i32; 5] = const_arr!([i32; 5], to_i32_plus_one);
assert_eq!(ARR2, [1, 2, 3, 4, 5]);
使用make_const_arr!
宏
use const_array_init::make_const_arr;
make_const_arr!(ARR1, [i32; 5], |i| i as i32 + 1);
assert_eq!(ARR1, [1, 2, 3, 4, 5]);
const fn to_i32_plus_one(n: usize) -> i32 {
n as i32 + 1
}
make_const_arr!(ARR2, [i32; 5], to_i32_plus_one);
assert_eq!(ARR2, [1, 2, 3, 4, 5]);
高级使用
- 请注意,
User
并不是Copy
,但您仍然可以使用此宏在const fn
上下文中使用。
use const_array_init::const_arr;
#[derive(Debug, PartialEq, Eq)]
struct User { id: u32 }
const fn create_user_from_i(i: usize) -> User {
User { id: i as u32 }
}
const USERS: [User; 1024] = const_arr!([User; 1024], create_user_from_i);
const USERS2: [User; 1024] = const_arr!([User; 1024], |i| User { id: i as u32 });