我有一个Result<Vec<f64>, _>。当我尝试提取指向实际数组的指针时f64,我观察到该数组dptr指向的是预期数组的损坏版本(前 10 个字节已更改)。
为什么会发生这种情况,我该如何避免这种情况?
use std::error::Error;
fn main() {
let res: Result<Vec<f64>, Box<dyn Error>> = Ok(vec![1., 2., 3., 4.]);
let dptr: *const f64 = match res {
Ok(v) => &v[0],
Err(_) => std::ptr::null(),
};
assert_eq!(unsafe { *dptr }, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
结果:
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `0.0`,
right: `1.0`', src/main.rs:9:5
Run Code Online (Sandbox Code Playgroud)