cannot move out of borrowed content
ฉันไม่เข้าใจข้อผิดพลาด ฉันได้รับมันหลายครั้งและฉันแก้ไขมันมาตลอด แต่ฉันไม่เคยเข้าใจว่าทำไม
ตัวอย่างเช่น:
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);
}
สร้างข้อผิดพลาด:
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
ใน Rust เวอร์ชันที่ใหม่กว่าข้อผิดพลาดคือ
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
ฉันแก้ไขโดยการโคลนline
:
for current_char in line.clone().into_bytes().iter() {
ฉันไม่เข้าใจข้อผิดพลาดแม้ว่าจะอ่านโพสต์อื่น ๆ เช่น:
- ไม่สามารถยืมไฟล์จาก & mut ตัวเองได้ (ข้อความแสดงข้อผิดพลาด: ไม่สามารถย้ายออกจากเนื้อหาที่ยืมมา)
- การเปลี่ยนโหนดในทรีใน Rust
ที่มาของข้อผิดพลาดแบบนี้คืออะไร?
.as_bytes()
as_bytes()
โดยไม่ต้องโคลนนิ่ง แต่ฉันยังไม่เข้าใจว่าทำไม?
.bytes()
วิธีการ)