Сырой указатель *const T
Сырой указатель *const T представляет собой неизменяемый указатель на данные типа T в памяти. В отличие от ссылок, сырые указатели не гарантируют безопасность и не проверяются компилятором на корректность. Они могут быть пустыми, указывать на освобождённую память или быть невыровненными. Параметром является тип данных T, на который указывает указатель. Для разыменования сырого указателя требуется блок unsafe.
Синтаксис
let ptr: *const T = &value as *const T;
Пример
Давайте создадим сырой указатель на целое число и разыменуем его в небезопасном блоке:
fn main()
{
let num = 42;
let ptr: *const i32 = &num as *const i32;
unsafe
{
println!("{}", *ptr);
}
}
Результат выполнения кода:
42
Пример
Давайте создадим сырой указатель на строку и проверим его на пустоту:
fn main()
{
let s = "abcde";
let ptr: *const str = s as *const str;
if ptr.is_null()
{
println!("Pointer is null");
}
else
{
println!("Pointer is not null");
}
}
Результат выполнения кода:
"Pointer is not null"
Пример
Давайте создадим сырой указатель на элемент массива и получим его значение:
fn main()
{
let arr = [10, 20, 30, 40, 50];
let ptr: *const i32 = &arr[2] as *const i32;
unsafe
{
println!("{}", *ptr);
}
}
Результат выполнения кода:
30