คำถามติดแท็ก borrow-checker

2
เหตุใดฉันไม่สามารถเก็บค่าและการอ้างอิงถึงค่านั้นในโครงสร้างเดียวกันได้
ฉันมีค่าและฉันต้องการเก็บค่านั้นและการอ้างอิงถึงสิ่งที่อยู่ภายในค่านั้นในประเภทของฉันเอง: struct Thing { count: u32, } struct Combined<'a>(Thing, &'a u32); fn make_combined<'a>() -> Combined<'a> { let thing = Thing { count: 42 }; Combined(thing, &thing.count) } บางครั้งฉันมีค่าและฉันต้องการเก็บค่านั้นและการอ้างอิงถึงค่านั้นในโครงสร้างเดียวกัน: struct Combined<'a>(Thing, &'a Thing); fn make_combined<'a>() -> Combined<'a> { let thing = Thing::new(); Combined(thing, &thing) } บางครั้งฉันไม่ได้อ้างอิงค่าและได้รับข้อผิดพลาดเดียวกัน: struct Combined<'a>(Parent, Child<'a>); fn make_combined<'a>() …

1
ไม่สามารถย้ายออกจากเนื้อหาที่ยืมมา / ไม่สามารถย้ายออกจากข้อมูลอ้างอิงที่แชร์ได้
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 …

1
อะไร "ไม่สามารถยืมเป็นไม่เปลี่ยนรูปเพราะมันก็ยืมเป็นไม่แน่นอน" หมายถึงในดัชนีอาร์เรย์ที่ซ้อนกัน?
ข้อผิดพลาดหมายถึงอะไรในกรณีนี้: fn main() { let mut v: Vec<usize> = vec![1, 2, 3, 4, 5]; v[v[1]] = 999; } error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable --> src/main.rs:3:7 | 3 | v[v[1]] = 999; | --^---- | | | | | immutable borrow occurs here …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.