Nagyon jó észrevétel.
Nem a kódsor maga lesz a segfault kiteljesítője, de abban a kódsorban lett az a védőháló nélküli kontrollálatlan utasítás végrehajtva, ami az egészet előidézi.
Másszóval ez is frankón ... segfault:
fn nemdurran() -> String {
    "Szia .. ez oké.".to_string()
}
fn feldurran() -> String {
    let buf = 0x10 as *mut u8; // jajj
    let len = 100;
    let capacity = 10; // len is nagyobb
    unsafe { String::from_raw_parts(buf, len, capacity) } // ennek a paramétereire kellett volna figyelni
}
fn main() {
    println!("{}", nemdurran());
    println!("Alább fel fog durranni");
    let durr = feldurran();
    println!("Durr ...");
    println!("Ez már nincs: {}", durr); // itt fog eldurranni ... a fenti hibás from_raw_parts() miatt.
}
unsafe { ... } és az általa engedélyezett kontrollálatlan lehetőségeket tényleg csak indokolható esetben (pl. nincs más megoldás) érdemes használni és körültekintően. Az itt kiadott kontrollálatlan utasításokkal semmivel sem vagy előrébb a C-hez képest biztonság terén. Viszont szűkebb részre kell koncentrálni átnézéskor. Unsafe szó szerencsére könnyen kereshető.
Minden egyéb helyen, ahol nem bújik ki a programozó a védelem alól, ott a nyelv védi a programozót, alacsony szintű hibát elkövetni az ilyen kódrészben nehezen tud.