обработки каждого lock() и заюзать ?
Пытаюсь сделать такое приведение
impl<T> From<PoisonError<T>> for String {
fn from(err: PoisonError<T>) -> Self {
err.to_string()
}
}
Но ловлю ошибку
error[E0117]: only traits defined in the current crate can be implemented for types defined outside of the crate
Сделайте свой lock (с помощью экстеншен трейта) со своей ошибкой.
боюсь представить как далеко меня это занесет. Придется ли свой мьютекс переопределять?
Вроде нет. Даже гуард свой не понадобится вроде.
Проверил. Работает: rust trait MutexLockSExt<T: ?Sized> { fn lock_s(&self) -> Result<MutexGuard<T>, String>; } impl<T: ?Sized> MutexLockSExt<T> for Mutex<T> { fn lock_s(&self) -> Result<MutexGuard<T>, String> { self.lock().map_err(|x| x.to_string()) } }
Обсуждают сегодня