Mutex
Mutex<T> asegura la exclusión mutua y permite un acceso mutable a T a través de una interfaz de solo lectura:
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()); }
Fíjate en cómo tenemos una implementación general de impl<T: Send> Sync for Mutex<T>.
Mutexen Rust parece una colección con un solo elemento: los datos protegidos.- No es posible olvidarse de adquirir la exclusión mutua antes de acceder a los datos protegidos.
 
- Puedes obtener un 
&mut TdeMutex<T>mediante el bloqueo. ElMutexGuardasegura que&mut Tno dure más tiempo que el bloqueo que se ha aplicado. Mutex<T>implementa tantoSendcomoSyncúnicamente siTimplementaSend.- Un equivalente de bloqueo de lectura y escritura: 
RwLock. - ¿Por qué 
lock()devuelve unResult?- Si el hilo que contiene 
Mutexentra en pánico,Mutexse “envenena” para indicar que los datos que protegía pueden estar en un estado incoherente. Llamar alock()en una exclusión mutua envenenada da el errorPoisonError. Puedes llamar ainto_inner()en el error para recuperar los datos de todos modos. 
 - Si el hilo que contiene