Метод into_inner
Метод into_inner потребляет мьютекс
и извлекает из него хранимое значение.
Он принимает self по значению, поэтому
после вызова мьютекс больше нельзя использовать.
Метод возвращает LockResult, который
содержит извлечённые данные. Если во время
блокировки мьютекса другой поток запаниковал,
метод вернёт ошибку PoisonError, но
при этом данные всё равно можно извлечь.
Синтаксис
mutex.into_inner()
Пример
Давайте создадим мьютекс с числом и извлечём
из него значение с помощью метода into_inner:
use std::sync::Mutex;
fn main()
{
let mutex = Mutex::new(12345);
let res = mutex.into_inner().unwrap();
println!("{}", res);
}
Результат выполнения кода:
12345
Пример
Давайте создадим мьютекс со строкой и извлечём из него значение:
use std::sync::Mutex;
fn main()
{
let mutex = Mutex::new(String::from("abcde"));
let res = mutex.into_inner().unwrap();
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим мьютекс с вектором и извлечём из него значение:
use std::sync::Mutex;
fn main()
{
let mutex = Mutex::new(vec![1, 2, 3, 4, 5]);
let res = mutex.into_inner().unwrap();
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Смотрите также
-
класс
Mutex,
который представляет собой мьютекс для безопасного обмена данными между потоками -
метод
new,
который создаёт новый мьютекс с указанным значением -
метод
lock,
который блокирует мьютекс и возвращает guard для доступа к данным -
метод
get_mut,
который возвращает изменяемую ссылку на данные без блокировки