Метод get_mut
Метод get_mut возвращает изменяемую ссылку
&mut T на данные, которые хранятся внутри
мьютекса. Этот метод не требует блокировки
мьютекса, поскольку он принимает &mut self,
а это гарантирует, что других ссылок на мьютекс
в данный момент не существует. Параметров метод
не принимает. Возвращается LockResult<&mut T>,
то есть Result, который содержит изменяемую
ссылку на данные в случае успеха.
Синтаксис
mutex.get_mut()
Пример
Давайте создадим мьютекс с числом 5
и изменим его значение через метод get_mut:
use std::sync::Mutex;
fn main()
{
let mut mutex = Mutex::new(5);
*mutex.get_mut().unwrap() = 10;
println!("{:?}", mutex);
}
Результат выполнения кода:
Mutex { data: 10, poisoned: false, .. }
Пример
Давайте создадим мьютекс с вектором
vec![1, 2, 3, 4, 5] и добавим в него новый
элемент через метод get_mut:
use std::sync::Mutex;
fn main()
{
let mut mutex = Mutex::new(vec![1, 2, 3, 4, 5]);
mutex.get_mut().unwrap().push(6);
println!("{:?}", mutex);
}
Результат выполнения кода:
Mutex { data: [1, 2, 3, 4, 5, 6], poisoned: false, .. }
Смотрите также
-
класс
Mutex,
который представляет собой примитив синхронизации -
метод
lock,
который блокирует мьютекс и возвращает guard -
метод
try_lock,
который пытается заблокировать мьютекс без ожидания -
метод
into_inner,
который извлекает данные из мьютекса