小编Lor*_*enz的帖子

当外部生命周期不同时,为什么我不能将一个引用的引用取消引用分配给另一个引用?

我想编写以下函数:

fn foo<'a, 'b, 'c>(rr1: &'a mut &'c mut u32, rr2: &'b mut &'c mut u32) {
    *rr1 = *rr2;
}
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨:

fn foo<'a, 'b, 'c>(rr1: &'a mut &'c mut u32, rr2: &'b mut &'c mut u32) {
    *rr1 = *rr2;
}
Run Code Online (Sandbox Code Playgroud)

我对 Rust 生命周期的心智模型不同意代码是错误的。我读的类型rr2为“具有寿命的引用'b与寿命的参考'c到一个u32”。因此,当我提领rr2,我与寿命引用'cu32。这应该可以安全地存储在*rr1具有相同类型的 中。

如果我需要它的'b寿命'c,它的工作原理:

fn foo<'a, 'b: 'c, 'c>(rr1: &'a mut &'c mut u32, rr2: &'b mut …
Run Code Online (Sandbox Code Playgroud)

lifetime rust

5
推荐指数
1
解决办法
115
查看次数

标签 统计

lifetime ×1

rust ×1