Функция new класса Pin
Функция new класса Pin создаёт новый экземпляр Pin,
который закрепляет переданное значение в его текущем месте в памяти.
Параметром функция принимает значение, которое нужно закрепить.
После закрепления значение не может быть перемещено, если только
оно не реализует трейт Unpin. Функция не является
unsafe, поскольку она не нарушает гарантий безопасности,
однако класс Pin часто используется в контексте
unsafe-кода для работы с самоссылающимися структурами.
Синтаксис
Pin::new(pointer)
Пример
Давайте создадим Pin для целочисленного значения
и выведем его на экран:
use std::pin::Pin;
fn main()
{
let value = 12345;
let pinned = Pin::new(&value);
println!("{}", pinned);
}
Результат выполнения кода:
12345
Пример
Давайте создадим Pin для строкового значения
и получим ссылку на него:
use std::pin::Pin;
fn main()
{
let value = "abcde";
let pinned = Pin::new(&value);
let res = *pinned.get_ref();
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Смотрите также
-
класс
Pin,
который закрепляет значение в памяти -
метод
new_unchecked,
который создаёт Pin без проверки гарантий -
класс
MaybeUninit,
который представляет возможно неинициализированное значение -
класс
NonNull,
который представляет ненулевой указатель