2 个版本
0.1.1 | 2019 年 9 月 1 日 |
---|---|
0.1.0 | 2019 年 9 月 1 日 |
#2784 in Rust 模式
17KB
413 行
disjoint-borrow
切片的独立借用。
提供了 DisjointSlice
类型,通过添加运行时检查来允许切片的独立借用。不可变借用可以与其他不可变借用相交,而可变借用则不能与任何借用相交。
借用跟踪是通过类型级别的列表实现的。这具有无需分配的优势,但也限制了独立借用的数量为编译时常量。
与无 std 兼容。
示例
use disjoint_borrow::DisjointSlice;
let mut array = [1, 2, 3, 4, 5];
let mut ds = DisjointSlice::new(&mut array);
let (mut ds, mut a) = ds.get_mut(0..2);
let (_, mut b) = ds.get_mut(3..5);
a[0] *= -1;
b[1] *= -1;
assert_eq!(a, &[-1, 2]);
assert_eq!(b, &[4, -5]);
许可证:MIT
lib.rs
:
切片的独立借用。
提供了 DisjointSlice
类型,通过添加运行时检查来允许切片的独立借用。不可变借用可以与其他不可变借用相交,而可变借用则不能与任何借用相交。
借用跟踪是通过类型级别的列表实现的。这具有无需分配的优势,但也限制了独立借用的数量为编译时常量。
与无 std 兼容。
示例
use disjoint_borrow::DisjointSlice;
let mut array = [1, 2, 3, 4, 5];
let mut ds = DisjointSlice::new(&mut array);
let (mut ds, mut a) = ds.get_mut(0..2);
let (_, mut b) = ds.get_mut(3..5);
a[0] *= -1;
b[1] *= -1;
assert_eq!(a, &[-1, 2]);
assert_eq!(b, &[4, -5]);