macro_rules! lock {
($mutex:expr) => { ... };
($mutex:expr, $context:expr) => { ... };
}Expand description
Helper macro for locking mutexes with automatic internal error handling.
This macro simplifies the common pattern of locking a mutex and converting
poisoning errors to Error::Internal. It automatically adds context about
which mutex was poisoned.
§Examples
ⓘ
// Without macro:
let mut data = my_mutex.lock().map_err(|_| Error::Internal("mutex poisoned".into()))?;
// With macro:
let mut data = lock!(my_mutex)?;The macro also supports adding context information:
ⓘ
// With context:
let mut data = lock!(my_mutex, "task_queue")?;
// Produces: Error::Internal("mutex poisoned: task_queue")