我有一个关于如何将move
变量转换为向量但不破坏该变量的问题,因为它必须在循环中重用。下面显示了我的意思:
type Letter = char;
type LetterSet = Vec<Letter>;
fn main() {
let mut v = Vec::<LetterSet>::new();
let mut letterset: LetterSet = LetterSet::new();
for i in 0..5 {
let a = (48 + i as u8) as char;
letterset.push(a);
if i % 2 == 1 {
let b = (65 + i as u8) as char;
letterset.push(b);
} else {
let c = (97 + i as u8) as char;
letterset.push(c);
}
v.push(letterset.clone());
letterset.clear();
}
for letterset in v {
for letter in letterset {
print!("{} ", letter);
}
println!("");
}
}
上面的代码运行。clone
但是,我想避免
v.push(letterset.clone());
letterset.clear();
因为letterset
无论如何都会被清除。相反,我想将其内容移入v
但保持其活动状态,因为letterset
必须用于下一次迭代。
我试图删除.clone()
,但显然这会导致“移动后借用”错误。我想知道怎么做,谢谢。