是否可以匹配Rust中的NULL指针?

时间:2016-05-26 16:42:49

标签: pointers rust

调用is_null()感觉有点奇怪:

fn do_stuff(ptr: *const i32) -> Option<i32> {
    if ptr.is_null() {
        None
    } else {
        Some(do_transform(*ptr, 42))
    }
}

1 个答案:

答案 0 :(得分:13)

从Rust 1.9开始,function as_ref将原始指针转换为Option<&T>,以及可变变体as_mut

您的代码看起来像

fn do_stuff(ptr: *const i32) -> Option<i32> {
    let ptr = unsafe { ptr.as_ref() };
    ptr.map(|x| do_transform(x, 42))
}