( uid_6201 | 2021. 03. 23., k – 01:08 )

És az általad összerakott példán keresztül látod, amiről eddig beszéltünk. Ahhoz, hogy időprés vagy bármi miatt "trehány segfault-os kódot" írjál Rust-ban, nem hogy időt takarítasz meg ahogy a C-nél láttuk, hanem jelentős többletenergiát kell befektetned a "trehánysághoz".

Ajándékként mellékelem letisztázva:

use std::ffi::CString;

fn datagen() -> CString {
    let p: *mut i8 = 0 as *mut i8;
    unsafe { CString::from_raw(p) }
}

fn main() {
    println!("s == {:?}", datagen());
}


A mezei halandó Rust programozó ezért vélhetőleg inkább az alábbit választja a fenti ffi:CString-es bajlódás helyett. Ráadásul időprés esetén is:

fn datagen() -> Option<String> {
    None
}

És igen, ekkor a főprogramban vagy if let Some(x) vagy match segítségével le fogja kezelni. Mert az az egyszerűbb, gyorsabban lekódolható út számára.