E0502E0502 — Impossibile Prendere in Prestito come Mutabile Perché Già Preso in Prestito come Immutabile
Un valore non può essere preso in prestito mutabilmente mentre è ancora attivo un prestito immutabile.
Cause di questo errore
Rust impone che non si possa avere contemporaneamente un riferimento mutabile e un riferimento immutabile agli stessi dati. Il prestito immutabile è ancora in uso quando si tenta di acquisire un prestito mutabile.
Come correggerlo
Ristrutturare il codice in modo che il prestito immutabile termini prima che inizi quello mutabile. Clonare i dati se si necessitano copie indipendenti. Usare un blocco per limitare lo scope del prestito immutabile.
Esempio
let mut v = vec![1, 2];
let r = &v[0];
v.push(3);
println!("{}", r);Codici di errore correlati
E0599E0599 — Nessun Metodo di Nome X Trovato per il Tipo
Il metodo non esiste sul tipo specificato, oppure il trait richiesto non è nel namespace corrente.
E0597E0597 — Il Valore Preso in Prestito Non Vive Abbastanza a Lungo
Un riferimento sopravvive ai dati a cui punta.
E0133E0133 — La Chiamata a una Funzione Unsafe Richiede un Blocco unsafe
Una funzione o un'operazione unsafe viene utilizzata al di fuori di un blocco unsafe.
E0308E0308 — Tipi Non Corrispondenti nei Bracci del Match
Bracci diversi del match restituiscono tipi incompatibili.
E0384E0384 — Impossibile Assegnare Due Volte a una Variabile Immutabile
A una variabile viene riassegnato un valore, ma non era stata dichiarata come mutabile.
E0200E0200 — Un Trait Unsafe Richiede un impl unsafe
Un trait unsafe deve essere implementato con un blocco unsafe impl.