Je ne comprends pas l'erreur cannot move out of borrowed content
. Je l'ai reçu plusieurs fois et je l'ai toujours résolu, mais je n'ai jamais compris pourquoi.
Par exemple:
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);
}
produit l'erreur:
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
Dans les versions plus récentes de Rust, l'erreur est
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
Je l'ai résolu en clonant line
:
for current_char in line.clone().into_bytes().iter() {
Je ne comprends pas l'erreur même après avoir lu d'autres articles comme:
- Impossible d'emprunter le fichier de & mut self (message d'erreur: impossible de sortir du contenu emprunté)
- Changer un nœud dans un arbre dans Rust
Quelle est l'origine de ce genre d'erreur?
.as_bytes()
as_bytes()
sans clonage. Mais je ne comprends toujours pas pourquoi?
.bytes()
méthode.)