Функция eq
Функция eq из модуля std::ptr сравнивает
два указателя или значения на равенство. Она принимает
два аргумента: первый - указатель на первое значение,
второй - указатель на второе значение. Функция возвращает
true, если значения равны, и false в
противном случае. Поскольку функция помечена как
unsafe, вызывающий код берёт на себя ответственность
за корректность переданных указателей.
Синтаксис
unsafe { std::ptr::eq(a, b) }
Пример
Давайте сравним два одинаковых значения типа i32
через указатели:
fn main()
{
let a = 5;
let b = 5;
let res = unsafe {
std::ptr::eq(&a, &b)
};
println!("{}", res);
}
Результат выполнения кода:
false
Обратите внимание, что переменные a и b
расположены по разным адресам, поэтому указатели не равны,
даже если значения одинаковы.
Пример
Давайте сравним два указателя, ссылающихся на одну и ту же переменную:
fn main()
{
let a = 5;
let p1 = &a;
let p2 = &a;
let res = unsafe {
std::ptr::eq(p1, p2)
};
println!("{}", res);
}
Результат выполнения кода:
true
Оба указателя ссылаются на один и тот же адрес памяти,
поэтому функция возвращает true.
Пример
Давайте сравним два разных значения через указатели:
fn main()
{
let a = 5;
let b = 10;
let res = unsafe {
std::ptr::eq(&a, &b)
};
println!("{}", res);
}
Результат выполнения кода:
false