Saya tidak mengerti kesalahannya cannot move out of borrowed content
. Saya telah menerimanya berkali-kali dan saya selalu menyelesaikannya, tetapi saya tidak pernah mengerti mengapa.
Sebagai contoh:
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);
}
menghasilkan kesalahan:
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
Di versi Rust yang lebih baru, kesalahannya adalah
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
Saya menyelesaikannya dengan kloning line
:
for current_char in line.clone().into_bytes().iter() {
Saya tidak memahami kesalahan bahkan setelah membaca posting lain seperti:
- Tidak dapat meminjam File dari & mut self (pesan kesalahan: tidak dapat keluar dari konten pinjaman)
- Mengubah node di pohon di Rust
Dari mana asal mula kesalahan semacam ini?
.as_bytes()
as_bytes()
tanpa kloning. Tapi saya masih tidak mengerti kenapa?
.bytes()
metode.)