Макрос 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