rust - 当你在 Rust 中可变地映射一个 Vector 时会发生什么?
问题描述
我目前正在学习 rustlings 课程,当这个关于移动语义的练习出现时,我感到很困惑。这是它的要点:
fn main(){
let vec0 = Vec::new();
let mut vec1 = fill_vec(vec0);
//stuff happens
}
fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
let mut vec = vec;
//do stuff
vec
}
据我所知,不可变对象作为参数vec0
被移动到,然后被可变地遮蔽。由于向量是对堆存储的引用,这是否意味着由于阴影而发生 a ,还是相同的指针被重用并且只是可变的?为什么要在这种情况下使用阴影?fill_vec
vec
let mut vec = vec;
clone()
解决方案
推荐阅读
- base64 - 在 Google Vision API 中使用 base64 编码的图像来检测文件中的笔迹和文本
- python - ImportError:没有名为 PyQt5.QtWidgets 的模块
- c# - Async System.Threading.Timer 有时会抛出空异常
- bash - 如何使用预定义的间距以表格格式编写 bash 命令的输出
- youtube-api - YouTube 如何回应配额增加请求?
- elasticsearch - 如何限制fluentd发送到elasticsearch的日志数量?
- python - 为什么 matplotlib 默认不保存整个图?
- android - Android - 为将来的文本设置 EditText 粗体/斜体/下划线
- javascript - CSS中的表格尺寸在HTML中不起作用
- apache-camel - 如何使用 Camel 3 向 SimpleRegistry 注册 Bean