Gibt es ein allgemeines Muster, um so etwas in Rust zu implementieren?Mehrfache Ausleihe in Rust
Der Fehler ist
cannot borrow `sprite` as mutable because it is also borrowed as immutable
ich das Problem verstehen, haben aber keine Ahnung, wie so etwas in Rust zu implementieren.
struct Sprite {
position: i32,
}
impl Sprite {
pub fn left(&mut self) {
self.position += 1;
}
}
struct Game<'g> {
sprite: &'g Sprite,
}
impl<'g> Game<'g> {
pub fn new(sprite: &Sprite) -> Game {
Game { sprite: sprite }
}
}
fn main() {
let mut sprite = Sprite { position: 3 };
let game = Game::new(&sprite);
sprite.left();
}
Der Code ist auch auf der playground verfügbar.
Willkommen bei Stack Overflow! Dies ist eine * extrem häufige Frage *; [Es gibt jetzt ** 94 Fragen mit der gleichen Fehlermeldung **] (http://stackoverflow.com/search?q=%5Brust%5D+kann+++++++++++++++++++++++++++++++ geliehen + als + unveränderlich + ist% 3Aq). SO erwartet, dass Sie sich [eine Menge Mühe in Ihre Frage gemacht haben, bevor Sie fragen] (https://meta.stackoverflow.com/q/261592/155423), also sollten Sie sich die Zeit nehmen, diese vorhandenen Fragen durchzulesen und dann zu erklären wie * diese * Frage ist anders als diese. Wenn die Leute keine vorhandenen Antworten lesen, gibt es nicht viel Grund, eine Website wie SO zu haben. – Shepmaster
Zusätzlich würde ich vorschlagen, mehr Prosa zu verwenden, um Ihr Problem im Körper zu beschreiben. Dies wird natürlich auch in einen besseren * Titel * übersetzt, der von unschätzbarem Wert ist. Wenn man "so etwas" sagt, zwingt ein zukünftiger Antwortsucher seinen Code zu lesen, zu analysieren und zu verstehen, bevor er verstehen kann, ob die Lösungen für sie nützlich sind. Es erzwingt die gleiche Anstrengung bei jedem potenziellen Beantworter, was mögliche Beantworter verlangsamt oder anderweitig entmutigt. – Shepmaster
Hinzufügen, es ist eine * sehr gute Idee *, die kostenlose Online-Dokumentation der Rust-Community zu lesen. [* The Rust Programming Language *] (https://doc.rust-lang.org/stable/book/) erklärt die Gründe für viele Entscheidungen von Rust und zeigt Beispiele. Das [Kapitel über Referenzen und Anleihen] (https://doc.rust-lang.org/stable/book/references-and-borrowing.html#the-rules) deckt die Tatsache ab, dass Sie möglicherweise keine anderen Referenzen im Internet haben Gleichzeitig haben Sie zum Beispiel eine veränderbare Referenz. – Shepmaster