Ich verstehe den Fehler nicht cannot move out of borrowed content
. Ich habe es oft erhalten und immer gelöst, aber ich habe nie verstanden warum.
Beispielsweise:
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);
}
erzeugt den Fehler:
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
In neueren Versionen von Rust ist der Fehler
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
Ich habe es durch Klonen gelöst line
:
for current_char in line.clone().into_bytes().iter() {
Ich verstehe den Fehler auch nach dem Lesen anderer Beiträge nicht wie:
- Datei kann nicht von & mut self ausgeliehen werden (Fehlermeldung: Ausgeliehener Inhalt kann nicht verlassen werden)
- Ändern eines Knotens in einem Baum in Rust
Was ist der Ursprung dieser Art von Fehler?
.as_bytes()
as_bytes()
ohne Klonen. Aber ich verstehe immer noch nicht warum?
.bytes()