1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
pub use std::sync::Arc as Share; pub use thiserror::Error; pub trait Mut : core::ops::Deref { /// Acquire the mutable borrow of a pointer. /// May clone the content if necessary. fn mutate(&mut self) -> &mut Self::Target; } impl<T: Clone> Mut for std::rc::Rc<T> { fn mutate(&mut self) -> &mut Self::Target { std::rc::Rc::make_mut(self) } } impl<T: Clone> Mut for Share<T> { fn mutate(&mut self) -> &mut Self::Target { Share::make_mut(self) } }