Ich versuche, einige Abschnitte meines Codes leichter zu lesen, indem Sie kleine Helfer-Schließungen verwenden.Kann nicht einer Variablen zugewiesen werden, die in einer Schließung verwendet wird, weil es geliehen ist
fn main() {
let mut loop_index = 0;
let get_src_index = || return loop_index % 2;
let get_dst_index = || return (loop_index + 1) % 2;
loop_index += 1;
}
Es gibt noch ein paar Verschlüsse, die Verwendung von get_src_index()
und get_dst_index()
, aber sie sind nicht wichtig, um das Problem zu machen. Das Problem ist, dass ich nicht mehr loop_index
ändern kann:
error[E0506]: cannot assign to `loop_index` because it is borrowed
--> src/main.rs:6:5
|
4 | let get_src_index = || return loop_index % 2;
| -- borrow of `loop_index` occurs here
5 | let get_dst_index = || return (loop_index + 1) % 2;
6 | loop_index += 1;
| ^^^^^^^^^^^^^^^ assignment to borrowed `loop_index` occurs here
Ich verstehe nicht ganz, warum Rust nicht die loop_index
Variable erhöht wird nicht gestattet. Gibt es einen "rostigen" Weg, dies zu tun?
Die Nachricht des Compilers scheint nicht mit dem obigen Code übereinzustimmen. Bitte mach einen MCVE, vorzugsweise mit einem Link zum [Rust Playground] (https://play.rust-lang.org/). –
@ E_net4 das hat mich auch erwischt. OP teilte den Code in zwei Blöcke auf, aber es war die Kombination der beiden, die den Fehler hatten. – Shepmaster