首页 > 解决方案 > 当你在 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_vecveclet mut vec = vec;clone()

标签: rustmove-semanticsownershipshadowing

解决方案



推荐阅读