use core::borrow::{Borrow, BorrowMut};
pub trait TryBorrow<Borrowed: ?Sized> {
type Error;
fn try_borrow(&self) -> Result<&Borrowed, Self::Error>;
}
pub trait TryBorrowMut<Borrowed: ?Sized> : TryBorrow<Borrowed> {
fn try_borrow_mut(&mut self) -> Result<&mut Borrowed, <Self as TryBorrow<Borrowed>>::Error>;
}
impl<T: Borrow<Borrowed>, Borrowed: ?Sized> TryBorrow<Borrowed> for T {
type Error = crate::Infallible;
#[inline]
fn try_borrow(&self) -> Result<&Borrowed, Self::Error> {
Ok(self.borrow())
}
}
impl<T: BorrowMut<Borrowed>, Borrowed: ?Sized> TryBorrowMut<Borrowed> for T {
#[inline]
fn try_borrow_mut(&mut self) -> Result<&mut Borrowed, Self::Error> {
Ok(self.borrow_mut())
}
}