如何检查两个变量是否指向内存中的同一对象?

Vas*_*hka 8 memory pointers rust

例如:

struct Foo<'a> { bar: &'a str }

fn main() {
    let foo_instance = Foo { bar: "bar" };
    let some_vector: Vec<&Foo> = vec![&foo_instance];

    assert!(*some_vector[0] == foo_instance);
}
Run Code Online (Sandbox Code Playgroud)
  1. 我想检查是否foo_instance引用相同的实例*some_vector[0],但我不能这样做...

  2. 我不想知道这两个实例是否相等; 我想检查变量是否指向内存中的同一个实例

有可能吗?

lje*_*drz 12

我对Rust的GitHub进行了一些挖掘,发现曾经有过这个功能ptr::eq,但它已不存在了.有一个开放的RFC可以恢复它.

现在你可以执行强制转换*const T:

ptr::eq

它应检查引用是否指向内存中的相同位置.