РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1100 of 1245 menu

Макрос pin!

Макрос pin! создаёт закреплённое значение прямо на стеке, не позволяя перемещать его в памяти после создания. Это особенно важно для работы с асинхронными операциями, где перемещение Future может привести к неопределённому поведению. Параметром макрос принимает значение, которое нужно закрепить, и возвращает Pin<&mut T>.

Синтаксис

pin!(value)

Пример

Давайте закрепим значение на стеке и выведем его на экран:

use std::pin::pin; fn main() { let pinned = pin!(42); println!("{}", pinned); }

Результат выполнения кода:

42

Пример

Давайте закрепим строку на стеке и выведем её на экран:

use std::pin::pin; fn main() { let mut pinned = pin!("abcde"); println!("{}", pinned); }

Результат выполнения кода:

"abcde"

Пример

Давайте закрепим изменяемое значение и изменим его через Pin:

use std::pin::pin; fn main() { let mut pinned = pin!(12345); *pinned = 54321; println!("{}", pinned); }

Результат выполнения кода:

54321

Смотрите также

  • тип Future,
    который представляет асинхронное вычисление
  • метод poll,
    который опрашивает состояние Future
  • тип Poll,
    который представляет результат опроса Future
  • ключевое слово await,
    которое ожидает завершения асинхронной операции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить