rust - Rust LinkedList 第二个可变借用,同时将第一项移动到末尾
问题描述
再会!我试图将第一项移动到链表中的末尾。我有一个这样的链接列表:
let mut list = LinkedList::new();
list.push_back('a');
list.push_back('b');
list.push_back('c');
如果我像这样移动项目:
list.push_back(list.pop_front().unwrap());
Rust 会抛出“第二个可变借用发生”错误。
但是如果在另一行代码中获取第一项:
let str = list.pop_front().unwrap();
list.push_back(str);
然后就好了。
为什么这两段代码的行为不同?我完全不明白。。
解决方案
push_back
和都是pop_front
保留对列表的可变引用的方法,因此您不能这样做:
list.push_back(list.pop_front().unwrap());
以您指出的另一种方式进行操作,因为您将可变引用放在第一行的末尾:
let str = list.pop_front().unwrap(); // mutable reference dropped here, so it's fine to have another mutable reference afterwards
list.push_back(str);
推荐阅读
- python - 结果按钮消失并且条件代码不起作用
- python - 在 Django 中按字段区分分组
- node.js - 添加“less”和“less-loader”模块后如何修复损坏的vuejs项目
- pytest - 如何将场景特定的参数传递给 pytest bdd after_scenario 挂钩?
- python - 熊猫使用 loc 更改特定行的数据集值
- c# - 未修改的 asp.net 模板中的 NullReferenceException (Visual Studio)
- mysql - 我想知道是否有任何方法可以添加新的元组而不干扰mysql中的当前数据序列?
- ios - func tableView 中的异步函数
- intersystems-iris - 将表格和其他组件动态添加到 ZEN PDF 报告
- python - TypeError: QThread(parent: QObject = None): 参数 1 具有意外类型 'Ui_Form'