considerare questo programma Rust:Perché questo programma di Rust non si blocca?
fn main() {
let mut z : Vec<Vec<(bool,f64)>> = Vec::with_capacity(10);
unsafe { z.set_len(10); }
z[0] = vec!((true,1.));
println!("{:?}", z[0]);
}
https://play.rust-lang.org/?gist=ccf387ed66a0d8b832ed&version=stable
Rust deve tentare di eliminare z[0]
quando abbiamo impostato, e dal momento che non è inizializzato z[0]
dovrebbe mandare in crash il programma. Tuttavia, funziona bene. Perché?
direi che sia a causa di un dettaglio di implementazione riguardante 'z..set_len'. Una volta che usi la semantica non sicura (in qualsiasi lingua), tutte le scommesse sono disattivate. Probabilmente si bloccherebbe più tardi, quando proverai ad accedere a qualsiasi cosa sia memorizzata nella posizione che l'assegnazione a 'z [0]' sovrascriverà, se ce ne sono. – jpaugh