为什么我不能将盒装的矢量内容借用为可变的?

PL_*_*lek 5 vector rust

为什么这不编译:

fn main() {
    let mut b = Box::new(Vec::new());
    b.push(Vec::new());
    b.get_mut(0).unwrap().push(1);
}
Run Code Online (Sandbox Code Playgroud)

虽然这样做:

fn main() {
    let a = Box::new(Vec::new());
    let mut b = *a;
    b.push(Vec::new());
    b.get_mut(0).unwrap().push(1);
}
Run Code Online (Sandbox Code Playgroud)

这也是:

fn main() {
    let mut b = Vec::new();
    b.push(Vec::new());
    b.get_mut(0).unwrap().push(Vec::new());
    b.get_mut(0).unwrap().get_mut(0).unwrap().push(1)
}
Run Code Online (Sandbox Code Playgroud)

第一和第三个对我来说是概念上是相同的- Box一中Vec的TOR Vec整数的职责范围和Vec的TOR Vec的TOR Vec整数的职责范围,但最后一个导致每个向量是可变的,而第一个使内部矢量不变.

She*_*ter 3

至少在 Rust 1.25.0 中,所有三个原始示例都有效。这是 Rust 某些早期版本中的一个错误。