|
In questo breve paragrafo parleremo di due operatori che riportano alla mente i puntatori di altri linguaggi. & - lo abbiamo già visto crea un riferimento ad un elemento (cioè punta all'area di memoria che contiene un dato elemento) che può essere mutabile oppure no, abbiamo visto che &T e &mut T sono gli operatori per i due casi. * - è l'operatore di dereferenziazione e accede direttamente al valore in memoria. Ecco l'esempio:
con questo output:
Come vedete attraverso & siamo arrivati a ,legare il valore puntato ad una variabile mentre con * abbiamo modificato il valore in memoria. Questo modi di operare è ben noto a chi usa i puntatori, in Rust è più raro rispetto a quanto ad esempio avviene con chi programma in C. Resta fermo il concetto che può esistere un solo puntatore mutabile ad una variabile. Ecco comunque un altro semplice esempio:
Questo è il caso diciamo "base" e più semplice da capire. In realtà Rust ha altri tipi di puntatore, un tipo si avvicina molto a quelli usati proprio in C, si parla di puntatori raw, ma abbiamo anche gli smart pointer. Di tutti ne parleremo in appositi paragrafi, in questo abbiamo parlato di quelli più diffusi ed utili per arrivare a parlare delle funzioni con tutti gli strumenti pronti. |