Eu não entendo o erro cannot move out of borrowed content
. Eu o recebi muitas vezes e sempre o resolvi, mas nunca entendi o porquê.
Por exemplo:
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);
}
produz o erro:
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
Nas versões mais recentes do Rust, o erro é
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
Eu o resolvi clonando line
:
for current_char in line.clone().into_bytes().iter() {
Não entendo o erro mesmo depois de ler outras postagens como:
- Não é possível emprestar o arquivo do & mut self (mensagem de erro: não é possível sair do conteúdo emprestado)
- Alterando um nó em uma árvore no Rust
Qual é a origem desse tipo de erro?
.as_bytes()
as_bytes()
sem clonagem. Mas ainda não entendo o porquê?
.bytes()
método.)