Rozważmy program Rust:Dlaczego ten program programu Rust nie działa?
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 powinien próbować upuść z[0]
kiedy go ustawić, a od z[0]
jest niezainicjowany powinien zawiesić program. Jednak działa dobrze. Czemu?
Przypuszczam, że to ze względu na szczegóły wykonawcze dotyczące 'z..set_len'. Po użyciu niebezpiecznej semantyki (w dowolnym języku) wszystkie zakłady są wyłączone. Prawdopodobnie ulegnie to awarii później, gdy spróbujesz uzyskać dostęp do tego, co jest przechowywane w lokalizacji, do której przypisane jest 'z [0]', jeśli istnieje. – jpaugh