小编Diz*_*tul的帖子

当涉及原始指针时,Rust 如何推断生命周期?

struct MyCell<T> {
    value: T
}

impl<T> MyCell<T> {
    fn new(value: T) -> Self {
        MyCell { value }
    }
    
    fn get(&self) -> &T {
        &self.value
    }
    
    fn set(&self, new_value: T) {
        unsafe { 
            *(&self.value as *const T as *mut T) = new_value; 
        }
    }
}

fn set_to_local(cell: &MyCell<&i32>) {
    let local = 100;
    cell.set(&local);
}

fn main() {
    let cell = MyCell::new(&10);
    set_to_local(&cell);
}
Run Code Online (Sandbox Code Playgroud)

当调用时cell.set(&local),假设cellis'x'&localis ,我被告知协方差规则将更改from到 的'y类型。cell&MyCell<'x, …

unsafe lifetime rust raw-pointer

2
推荐指数
1
解决办法
652
查看次数

标签 统计

lifetime ×1

raw-pointer ×1

rust ×1

unsafe ×1