#array #split #compile-time #validation #no-alloc

nightly 无std split_array

使用编译时大小验证将数组引用分成两部分

3个不稳定版本

0.2.0 2024年4月12日
0.1.1 2024年4月8日
0.1.0 2024年4月8日

#280无标准库

每月下载量:28

MIT 许可协议

16KB
302

split_array

使用编译时大小验证将数组引用分成两部分。

此crate需要nightly版本!

使用不稳定特性

示例

两个 halves 的大小通常可以推断出来

use split_array::SplitArray;
let mut array: [usize; 5] = [0, 1, 2, 3, 4];
let (left, right) = array.split_arr_mut();
* left = [10, 11, 12];
* right = [23, 24];
assert_eq!([10, 11, 12, 23, 24], array);

也可以显式地进行注释

use split_array::SplitArray;
let array: [usize; 5] = [0, 1, 2, 3, 4];
let (left, right) = array.split_arr::<2 > ();
assert_eq!([0, 1, 2], *left);
assert_eq!([3, 4], *right);

注释的大小将在编译时进行验证。这将无法编译

use split_array::SplitArray;
let array: [usize; 5] = [0, 1, 2, 3, 4];
let (left, right) = array.split_arr::<6 > ();

lib.rs:

使用编译时大小验证将数组引用分成两部分。

示例

两个 halves 的大小通常可以推断出来

use split_array::SplitArray;

let mut array: [usize; 5] = [0, 1, 2, 3, 4];
let (left, right) = array.split_arr_mut();
*left = [10, 11, 12];
*right = [23, 24];
assert_eq!([10, 11, 12, 23, 24], array);

也可以显式地进行注释

use split_array::SplitArray;

let array: [usize; 5] = [0, 1, 2, 3, 4];
let (left, right) = array.split_arr::<2>();
assert_eq!([0, 1, 2], *left);
assert_eq!([3, 4], *right);

注释的大小将在编译时进行验证。这将无法编译

use split_array::SplitArray;

let array: [usize; 5] = [0, 1, 2, 3, 4];
let (left, right) = array.split_arr::<6>();

无运行时依赖