pub enum Calf<'own, BorrowedT> {
Borrowed(&'own BorrowedT),
Owned(BorrowedT),
}
Expand description
A read-only container for either an owned value or a reference to one.
Similar to Cow, but does not support ToOwned (and does not require your value to support it), nor does it support BorrowMut.
It’s a baby cow!
Note that after coming up with the idea for this, I discovered that someone else did, too. Check out maybe-owned for an identical type that comes with a zillion more trait implementations.
Variants§
Implementations§
Trait Implementations§
Source§impl<'own, BorrowedT> Borrow<BorrowedT> for Calf<'own, BorrowedT>
impl<'own, BorrowedT> Borrow<BorrowedT> for Calf<'own, BorrowedT>
Source§fn borrow(&self) -> &BorrowedT
fn borrow(&self) -> &BorrowedT
Immutably borrows from an owned value. Read more
Source§impl<'own, BorrowedT> BorrowMut<BorrowedT> for Calf<'own, BorrowedT>
impl<'own, BorrowedT> BorrowMut<BorrowedT> for Calf<'own, BorrowedT>
Source§fn borrow_mut(&mut self) -> &mut BorrowedT
fn borrow_mut(&mut self) -> &mut BorrowedT
Mutably borrows from an owned value. Read more
Source§impl<'own, BorrowedT> From<Cow<'own, BorrowedT>> for Calf<'own, BorrowedT>where
BorrowedT: ToOwned<Owned = BorrowedT>,
impl<'own, BorrowedT> From<Cow<'own, BorrowedT>> for Calf<'own, BorrowedT>where
BorrowedT: ToOwned<Owned = BorrowedT>,
Source§impl<'own, BorrowedT> Into<Cow<'own, BorrowedT>> for Calf<'own, BorrowedT>where
BorrowedT: ToOwned<Owned = BorrowedT>,
impl<'own, BorrowedT> Into<Cow<'own, BorrowedT>> for Calf<'own, BorrowedT>where
BorrowedT: ToOwned<Owned = BorrowedT>,
Source§impl<'own, BorrowedT, OwnedT> ToOwned for Calf<'own, BorrowedT>
impl<'own, BorrowedT, OwnedT> ToOwned for Calf<'own, BorrowedT>
Auto Trait Implementations§
impl<'own, BorrowedT> Freeze for Calf<'own, BorrowedT>where
BorrowedT: Freeze,
impl<'own, BorrowedT> RefUnwindSafe for Calf<'own, BorrowedT>where
BorrowedT: RefUnwindSafe,
impl<'own, BorrowedT> Send for Calf<'own, BorrowedT>
impl<'own, BorrowedT> Sync for Calf<'own, BorrowedT>where
BorrowedT: Sync,
impl<'own, BorrowedT> Unpin for Calf<'own, BorrowedT>where
BorrowedT: Unpin,
impl<'own, BorrowedT> UnwindSafe for Calf<'own, BorrowedT>where
BorrowedT: UnwindSafe + RefUnwindSafe,
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