【发布时间】:2021-08-18 00:06:17
【问题描述】:
我似乎找不到从HashSet 中弹出(随机)值的方法。受其他代码示例的启发,我编写了以下代码:
my_set.iter().next().map(|i| my_set.take(i).unwrap())
即获取集合值的迭代器,从中获取第一个值(引用),然后使用先前获得的引用运行my_set.take(),以获取值本身(不是引用)并将其从设置。
由于以下原因无法编译:
error[E0500]: closure requires unique access to `my_set` but it is already borrowed
|
32 | my_set.iter().next().map(|i| my_set.take(i).unwrap())
| ------ --- ^^^ ------ second borrow occurs due to use of `my_set` in closure
| | | |
| | | closure construction occurs here
| | first borrow later used by call
| borrow occurs here
我已经尝试了很多很多变体,但由于不可变借用然后被借用为可变(错误 502),它们都失败了。
任何人都可以推荐一种重写上述方法的方法吗?
【问题讨论】:
标签: rust hashset borrow-checker