Secondo gli rust book per gli iteratori ci sono consumatori come find
e fold
.Perché il metodo di piegatura fornisce l'elemento effettivo anziché un riferimento?
Sono usati come:
let greater_than_forty_two = (0..100).find(|x| *x > 42);
e
let sum = (1..4).fold(0, |sum, x| sum + x);
In entrambi i casi x
è il valore corrente. Tuttavia nel primo caso x
è un riferimento e nel secondo caso è l'elemento stesso.
Per quanto ho capito dal ciclo for
, deve essere un riferimento per evitare problemi del proprietario. Ma non dovrebbe esserci lo stesso problema del proprietario nel caso fold?
Ok, il punto è che 'find' restituisce effettivamente uno dei suoi valori, mentre' fold' restituisce sempre un nuovo valore (composto). Grazie. – michas