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

Метод 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,
    который возвращает изменяемую ссылку на данные без блокировки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить