How to check if two variables point to the same object in memory?

There is the function ptr::eq:

use std::ptr;

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

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

    assert!(ptr::eq(some_vector[0], &foo_instance));
}

Before this was stabilized in Rust 1.17.0, you could perform a cast to *const T:

assert!(some_vector[0] as *const Foo == &foo_instance as *const Foo);

It will check if the references point to the same place in the memory.

Leave a Comment