rust - 如何在可变引用中获取、转换和替换向量?
问题描述
我有一个struct Database { events: Vec<Event> }
. 我想将一些地图和过滤器应用于events
. 有什么好方法可以做到这一点?
这是我尝试过的:
fn update(db: &mut Database) {
db.events = db.events.into_iter().filter(|e| !e.cancelled).collect();
}
这不起作用:
cannot move out of `db.events` which is behind a mutable reference
...
move occurs because `db.events` has type `Vec<Event>`, which does not implement the `Copy` trait
有什么方法可以说服 Rust 编译器我只是暂时地获取字段值?
解决方案
在您暴露的情况下,更安全的方法是使用Vec.retain
:
fn update(db: &mut Database) {
db.events.retain(|e| !e.cancelled);
}
推荐阅读
- python - 如何使用 Numpy.vectorize 以有效的方式迭代 Pandas 数据帧?
- azure - 无法在 AzureML 上运行 tensorboard,出现 502 错误
- java - JUnit 单击键盘上的搜索按钮
- javascript - 如何将流从 php 链接传递到 clappr 播放器?
- electron - electron-builder - 如何在没有管理员权限的情况下写入/覆盖“app.asar.unpacked”文件夹中的文件
- python - python Dataframe subString 一列(长字符串)
- java - CameraX 和 OpenGL 在实时相机上应用效果
- javascript - 收音机更改音频值 onClick
- macos - 如何签署 shell 脚本以在 Mac OSX 上运行?
- sentry - Cloudflare Workers 的性能日志记录