rust 如何保存指向保存引用的数据的指针?

ee7vknir  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(82)

下面是一个例子:

struct Data<'arg> {
    object: &'arg usize,
}
struct Holder {
    data: *const ??
}

impl Holder {
    pub fn new<'arg>(data: &Data<'arg>) -> Self {
        Self { data }
    }
}

字符串
应该如何完成它,以便“数据”保存任何生命周期的任何数据?
如果我使用*const dyn Trait,它要求'arg outlives 'static。如果dyn Trait的引用被传递给new,它要求它的引用比static的寿命长。

scyqe7ek

scyqe7ek1#

您可以使用'static,并转换类型,但要注意不要实际暴露任何'static对数据的引用,因为这将是不合理的:

struct Holder {
    data: *const Data<'static>
}

impl Holder {
    pub fn new<'arg>(data: &Data<'arg>) -> Self {
        let data = (data as *const Data<'arg>).cast::<Data<'static>>();
        Self { data }
    }
}

字符串

相关问题