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

标签 pointers rust

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

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

最佳答案

从 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))
}

关于pointers - 是否可以匹配 Rust 中的 NULL 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37466676/

相关文章:

c - 结构的扫描使程序崩溃

generics - 为什么特征内的泛型方法需要调整特征对象的大小?

rust - 将 Arc<Future> 移动到线程池中

rust - 不同地方的不同对象的生命周期相等

c++ - 返回枚举数组的函数

c++ - 是否可以在可移植 C++03 代码中散列指针?

c++ - 段错误,你能帮我吗?

c++ - 访问指针类型的静态属性

list - 在 self 上指定生命周期时,Rust 在 trait 上使用动态多态性的问题

rust - 有没有办法在 Rust 库中包含二进制文件或文本文件?