rust - 如何更新 VecDeque 中的值
问题描述
我想将值存储在 VecDeque 中并在它更新值之后。
最小的例子:
use std::collections::VecDeque;
fn main() {
let mut v = VecDeque::new();
let mut str1 = String::from("Hello");
v.push_back(str1);
let str = String::from(" World");
str1.push_str(&str);
}
错误:
Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `str1`
--> src/main.rs:10:5
|
5 | let mut str1 = String::from("Hello");
| -------- move occurs because `str1` has type `std::string::String`, which does not implement the `Copy` trait
6 |
7 | v.push_back(str1);
| ---- value moved here
...
10 | str1.push_str(&str);
| ^^^^ value borrowed here after move
error: aborting due to previous error
问题:
如何将项目添加到集合并在它更新此项目后?
解决方案
利用back_mut
v.back_mut().unwrap().push_str(&str);
或者只是将引用存储在双端队列中
v.push_back(&mut str1);
推荐阅读
- azure - 无法通过 SSIS 连接到 Azure 数据湖存储
- performance - 调整写入配置时触发 cassandra 连接器写入超时
- asp.net-core - .NET Core - Serilog - IHostBuilder 不包含 UseSerilog() 的定义
- javascript - 如何制作曲线以连接 HTML 和 CSS 中的两个节点?
- javascript - 使用 DOM 操作删除 CSS 'transform'
- linux - 单个 Windows 进程无法使用我设置的所有 80 个可用线程,为什么?
- if-statement - 如何使用“IF 语句”从范围中选择数字?
- c++ - 如何递归地将整数链表拆分为 C++ 中的奇数和偶数列表?
- amazon-web-services - 在开发过程中如何在不产生成本的情况下实施云解决方案?
- spring - 对于 FlowJobBuilder 类型,方法 next(Step) 未定义