Non capisco l'errore cannot move out of borrowed content
. L'ho ricevuto molte volte e l'ho sempre risolto, ma non ho mai capito il perché.
Per esempio:
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);
}
produce l'errore:
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
Nelle versioni più recenti di Rust, l'errore è
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
L'ho risolto clonando line
:
for current_char in line.clone().into_bytes().iter() {
Non capisco l'errore anche dopo aver letto altri post come:
- Impossibile prendere in prestito il file da & mut self (errore messaggio: impossibile spostarsi dal contenuto preso in prestito)
- Modifica di un nodo in un albero in Rust
Qual è l'origine di questo tipo di errore?
.as_bytes()
as_bytes()
senza clonazione. Ma ancora non capisco perché?
.bytes()
metodo.)