Сырой указатель *mut T
Сырой указатель *const T - это тип, представляющий
изменяемый указатель на данные типа T.
В отличие от безопасных ссылок, сырые указатели не
отслеживаются компилятором и не гарантируют
безопасность доступа к памяти. Они могут быть
нулевыми, висеть в воздухе и указывать на
неизменяемые данные. Операции разыменования и
записи по такому указателю должны выполняться
внутри блока unsafe.
Синтаксис
let ptr: *mut T;
Пример
Давайте создадим изменяемый сырой указатель на переменную и изменим её значение:
fn main()
{
let mut num = 10;
let ptr: *mut i32 = &mut num;
unsafe {
*ptr = 20;
}
println!("{}", num);
}
Результат выполнения кода:
20
Пример
Давайте создадим сырой указатель и проверим его на равенство нулевому указателю:
fn main()
{
let ptr: *mut i32 = std::ptr::null_mut();
if ptr.is_null() {
println!("ptr is null");
}
}
Результат выполнения кода:
"ptr is null"
Пример
Давайте создадим сырой указатель на элемент массива и прочитаем его значение:
fn main()
{
let mut arr = [1, 2, 3];
let ptr: *mut i32 = &mut arr[1];
unsafe {
println!("{}", *ptr);
}
}
Результат выполнения кода:
2