Enum evm::maybe_borrowed::MaybeBorrowed
source · pub enum MaybeBorrowed<'a, T> {
Borrowed(&'a mut T),
Owned(T),
}
Expand description
Similar to Cow
from the standard library, but without requiring T: Clone
.
Instead of “copy on write”, this data structure represents a type that can create
&mut T
, either because it is &mut T
, or because it is an owned T
.
This is also distinct from the BorrowMut
trait in the standard library because
you can have a single collection mix both borrowed and owned data (e.g.
let xs: Vec<MaybeBorrowed<'_, T>> = vec![&mut t1, t2]
would be possible whereas
Vec<B> where B: BorrowMut<T>
would need to consist of all owned or all borrowed data).
Variants§
Trait Implementations§
source§impl<'a, T: Debug> Debug for MaybeBorrowed<'a, T>
impl<'a, T: Debug> Debug for MaybeBorrowed<'a, T>
source§impl<'a, T> Deref for MaybeBorrowed<'a, T>
impl<'a, T> Deref for MaybeBorrowed<'a, T>
Auto Trait Implementations§
impl<'a, T> RefUnwindSafe for MaybeBorrowed<'a, T>where
T: RefUnwindSafe,
impl<'a, T> Send for MaybeBorrowed<'a, T>where
T: Send,
impl<'a, T> Sync for MaybeBorrowed<'a, T>where
T: Sync,
impl<'a, T> Unpin for MaybeBorrowed<'a, T>where
T: Unpin,
impl<'a, T> !UnwindSafe for MaybeBorrowed<'a, T>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more