3个不稳定版本
0.2.0 | 2020年6月29日 |
---|---|
0.1.1 | 2020年6月28日 |
0.1.0 | 2020年6月28日 |
#1060 在 数据结构
6KB
109 行
Stonks
描述
此crate提供允许在插入条目时进行借用的集合。
尽管在插入条目时允许引用同一集合中的其他条目,但无法删除条目,因为这可能会使所持有的对该条目的引用失效。
示例
问题代码
以下代码将无法工作
use std::collections::HashSet;
fn main() {
let mut set = HashSet::with_capacity(10);
set.insert("hello");
let hello = set.get(&"hello").unwrap();
// Error: Cannot borrow `set` as mutable because it is also borrowed as immutable.
set.insert("world");
assert_eq!(hello, &"hello");
}
解决方案
使用Stonks,我们可以这样做,归功于内部可变性
use stonks::Set;
fn main() {
// Our set doesn't need to be mutable.
let set = Set::new();
// Insert some data.
set.insert("hello");
// We now have a reference to the data we previously inserted.
let hello = set.get(&"hello").unwrap();
// We can insert more data despite holding a reference to it.
set.insert("world");
assert_eq!(hello, set.get(&"hello").unwrap());
}