Open4

Rust標準トレイト

koko_ukoko_u

borrow::Borrow

pub trait Borrow<Borrowed>
where
    Borrowed: ?Sized,
{
    // Required method
    fn borrow(&self) -> &Borrowed;
}

何かの型(Borrowed)として借用できることを示すトレイト

Hidden comment
koko_ukoko_u

convert::AsRef

pub trait AsRef<T>
where
    T: ?Sized,
{
    // Required method
    fn as_ref(&self) -> &T;
}

何かの参照(&T)に変換できることを示すトレイト

koko_ukoko_u

カタチは Borrow と同じ。意味が違うだけ。意味の違いが標準で Borrow を実装する型と AsRef を参照する型の違いに表われている

例えば、ベクター Vec<T> も スライス &[T]も配列 [T; N]&[T] に変換できる。AsRef<[T]> で「スライスに類する何か」を表現できる