Я пытаюсь передать право собственности на переменную функции в цикле, и у меня есть собственное логическое значение, чтобы гарантировать, что это произойдет только один раз, однако компилятор сообщает мне, что значение было перемещено на предыдущей итерации.
Вот пример:
fn take_ownership(a: String) {
println!("{}", a);
}
fn main() {
let mut a = true;
let hello = "Hello".to_string();
for _ in 0..5 {
if a {
a = false;
take_ownership(hello);
}
}
}
С помощью этого кода компилятор сообщает мне:
error[E0382]: use of moved value: `hello`
--> src/main.rs:12:28
|
12 | take_ownership(hello);
| ^^^^^ value moved here in previous iteration of loop
Есть ли способ сказать компилятору: «Все в порядке, я справлюсь»? Я не хочу использовать ссылки (&
).