Mutex
Mutex<T> забезпечує взаємовиключення та дозволяє мутабельний доступ до T за інтерфейсом лише для читання (інша форма внутрішньої мутабельності):
use std::sync::Mutex; fn main() { let v = Mutex::new(vec![10, 20, 30]); println!("v: {:?}", v.lock().unwrap()); { let mut guard = v.lock().unwrap(); guard.push(40); } println!("v: {:?}", v.lock().unwrap()); }
Зверніть увагу, що ми маємо impl<T: Send> Sync for Mutex<T> загальну реалізацію.
This slide should take about 14 minutes. 
                    Mutexу Rust виглядає як колекція лише з одним елементом — захищеними даними.- Неможливо забути отримати м’ютекс перед доступом до захищених даних.
 
- Ви можете отримати 
&mut Tвід&Mutex<T>, взявши блокування.MutexGuardгарантує, що&mut Tне переживе утримуване блокування. Mutex<T>реалізує якSend, так іSyncтоді і тільки тоді колиTреалізуєSend.- Аналог блокування читання-запису: 
RwLock. - Чому 
lock()повертаєResult?- Якщо потік, який утримував 
Mutex, запанікував,Mutexстає “отруєним”, сигналізуючи про те, що дані, які він захищає, можуть перебувати в неузгодженому стані. Викликlock()для отруєнного м’ютексу зазнає невдачі зPoisonError. Ви можете викликатиinto_inner()для помилки, щоб відновити дані незалежно від цього. 
 - Якщо потік, який утримував