0
我可以製作此矢量的副本,但這需要時間和內存。 我可以寫另一個println
,但這僅僅是一個例子 - 而不是println
可能會有幾個循環 - 它會佔用空間並使代碼複雜化。我可以在main
中執行轉換並編寫函數調用的兩個版本,但更改引用要容易得多。爲什麼我不能在「if」中引用內存?
fn foo(mut a: &Vec<i32>) {
let mut c: Vec<i32>;
if a[0] == 0 {
c = vec![1; 3];
a = &c;
}
println!("{:?}", a);
}
fn main() {
let a: Vec<i32> = vec![0; 3];
foo(&a);
}
錯誤:
main.rs:9:14: 9:15 error: `c` does not live long enough
main.rs:9 a = &c;
^
無需拷貝,你可以交換'c'和'a'的值。 –
我正在談論複製*參考*而不是矢量。 – Levans
啊,好的。但是OP沒有想要'ver_ref'發生變異? –