#array #borrow #index

arref

简化从数组中借用可变元素的难度

1 个不稳定版本

0.1.0 2022 年 9 月 26 日

#48#borrow

Download history 25/week @ 2024-03-11 24/week @ 2024-03-18 52/week @ 2024-03-25 59/week @ 2024-04-01 71/week @ 2024-04-08 48/week @ 2024-04-15 47/week @ 2024-04-22 67/week @ 2024-04-29 51/week @ 2024-05-06 116/week @ 2024-05-13 57/week @ 2024-05-20 121/week @ 2024-05-27 71/week @ 2024-06-03 202/week @ 2024-06-10 138/week @ 2024-06-17 68/week @ 2024-06-24

482 每月下载量
用于 10 个 crate (6 直接)

MIT 许可证

6KB
50

从同一数组中获取两个元素的可变引用是困难的。这个小巧的库提供了一种使它更容易的方法。

[array_mut_ref!] 检查用户在运行时是否借用了相同的元素。

use arref::array_mut_ref;
let mut arr = vec![1, 2, 3, 4];
let (a, b) = array_mut_ref!(&mut arr, [1, 2]);
assert_eq!(*a, 2);
assert_eq!(*b, 3);
let (a, b, c) = array_mut_ref!(&mut arr, [1, 2, 0]);
assert_eq!(*c, 1);

// ⚠️ The following code will panic. Because we borrow the same element twice.
// let (a, b) = array_mut_ref!(&mut arr, [1, 1]);

或者,您可以使用 [mut_twice]。如果再次借用相同的元素,它不会引发恐慌。它将返回一个 Err(&mut T)

use arref::mut_twice;
let mut arr = vec![1, 2, 3];
let (a, b) = mut_twice(&mut arr, 1, 2).unwrap();
assert_eq!(*a, 2);
assert_eq!(*b, 3);
let result = mut_twice(&mut arr, 1, 1);
assert!(result.is_err());
if let Err(v) = result {
    assert_eq!(*v, 2);
}

lib.rs:

从同一数组中获取两个元素的可变引用是困难的。这个小巧的库提供了一种使它更容易的方法。

[array_mut_ref!] 检查用户在运行时是否借用了相同的元素。

use arref::array_mut_ref;
let mut arr = vec![1, 2, 3, 4];
let (a, b) = array_mut_ref!(&mut arr, [1, 2]);
assert_eq!(*a, 2);
assert_eq!(*b, 3);
let (a, b, c) = array_mut_ref!(&mut arr, [1, 2, 0]);
assert_eq!(*c, 1);

// ⚠️ The following code will panic. Because we borrow the same element twice.
// let (a, b) = array_mut_ref!(&mut arr, [1, 1]);

或者,您可以使用 [mut_twice]。如果再次借用相同的元素,它不会引发恐慌。它将返回一个 Err(&mut T)

use arref::mut_twice;
let mut arr = vec![1, 2, 3];
let (a, b) = mut_twice(&mut arr, 1, 2).unwrap();
assert_eq!(*a, 2);
assert_eq!(*b, 3);
let result = mut_twice(&mut arr, 1, 1);
assert!(result.is_err());
if let Err(v) = result {
    assert_eq!(*v, 2);
}

无运行时依赖