Я не понимаю ошибку cannot move out of borrowed content
. Я получал это много раз и всегда решал, но никогда не понимал почему.
Например:
for line in self.xslg_file.iter() {
self.buffer.clear();
for current_char in line.into_bytes().iter() {
self.buffer.push(*current_char as char);
}
println!("{}", line);
}
выдает ошибку:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:31:33
|
31 | for current_char in line.into_bytes().iter() {
| ^^^^ cannot move out of borrowed content
В более новых версиях Rust ошибка
error[E0507]: cannot move out of '*line' which is behind a shared reference
--> src/main.rs:31:33
|
31 | for current_char in line.into_bytes().iter() {
| ^^^^ move occurs because '*line' has type 'std::string::String', which does not implement the 'Copy' trait
Я решил это клонированием line
:
for current_char in line.clone().into_bytes().iter() {
Я не понимаю ошибку даже после прочтения других сообщений, таких как:
- Невозможно заимствовать файл из & mut self (ошибка msg: невозможно выйти из заимствованного содержимого)
- Изменение узла в дереве в Rust
Каково происхождение такого рода ошибки?