Errore Rust E0503: cannot use `x` because it was mutably borrowed
L'errore E0503 segnala il tentativo di leggere o utilizzare il valore originale di una variabile mentre esiste ancora un prestito mutabile esclusivo ('&mut x') attivo su di essa.
Categoria
Articoli tecnici organizzati per gruppo funzionale.
L'errore E0503 segnala il tentativo di leggere o utilizzare il valore originale di una variabile mentre esiste ancora un prestito mutabile esclusivo ('&mut x') attivo su di essa.
L'errore E0505 segnala che una variabile non può essere trasferita o riassegnata per valore finché esiste un riferimento valido e attivo che punta alla sua memoria.
L'errore E0506 si presenta quando si tenta di riassegnare o sovrascrivere una variabile mentre altri lettori o puntatori condividono temporaneamente un prestito sui suoi dati.
L'errore E0507 segnala il tentativo di trasferire l'ownership di un campo o valore accessibile unicamente tramite riferimento condiviso (&T), operazione che lascerebbe il dato originario vuoto o non inizializzato.
In Rust non è consentito estrarre un elemento per valore da uno slice ('arr[0]') se il tipo T non implementa il trait 'Copy', perché l'operazione lascerebbe un 'buco' non inizializzato nella memoria contigua dello slice.
Se una struttura o enum implementa il trait 'Drop' per la distruzione controllata delle risorse, Rust vieta lo spostamento parziale dei suoi campi per valore, poiché 'drop()' deve poter essere eseguito sull'istanza integra.
All'interno di una clausola guard di un pattern match ('match x { Some(val) if { ... } => ... }'), il compilatore vieta qualsiasi modifica o mutazione dei valori catturati per preservare l'integrità del matching.
L'errore E0515 impedisce la creazione di dangling pointers (puntatori penzolanti): non è consentito restituire un riferimento a una variabile allocata nello stack della funzione, che cessa di esistere al return.