Trait Borrow

Source
pub trait Borrow:
    Len
    + Clone
    + 'static {
    type Ref<'a>: Copy;
    type Borrowed<'a>: Copy + Len + Index<Ref = Self::Ref<'a>>
       where Self: 'a;

    // Required methods
    fn borrow<'a>(&'a self) -> Self::Borrowed<'a>;
    fn reborrow<'b, 'a: 'b>(item: Self::Borrowed<'a>) -> Self::Borrowed<'b>
       where Self: 'a;
    fn reborrow_ref<'b, 'a: 'b>(item: Self::Ref<'a>) -> Self::Ref<'b>
       where Self: 'a;
}
Expand description

A type that can be borrowed into a preferred reference type.

Required Associated Types§

Source

type Ref<'a>: Copy

For each lifetime, a reference with that lifetime.

As an example, (&'a A, &'a [B]).

Source

type Borrowed<'a>: Copy + Len + Index<Ref = Self::Ref<'a>> where Self: 'a

The type of a borrowed container.

Corresponding to our example, (&'a [A], Vecs<&'a [B], &'a [u64]>).

Required Methods§

Source

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Converts a reference to the type to a borrowed variant.

Source

fn reborrow<'b, 'a: 'b>(item: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where Self: 'a,

Reborrows the borrowed type to a shorter lifetime. See Columnar::reborrow for details.

Source

fn reborrow_ref<'b, 'a: 'b>(item: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Reborrows the borrowed type to a shorter lifetime. See Columnar::reborrow for details.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<AA: Borrow> Borrow for (AA,)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>,) where AA: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>,) where AA: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow> Borrow for (AA, BB)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>) where AA: 'a, BB: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow> Borrow for (AA, BB, CC)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow> Borrow for (AA, BB, CC, DD)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow, EE: Borrow> Borrow for (AA, BB, CC, DD, EE)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>, <EE as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>, <EE as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow, EE: Borrow, FF: Borrow> Borrow for (AA, BB, CC, DD, EE, FF)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>, <EE as Borrow>::Ref<'a>, <FF as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>, <EE as Borrow>::Borrowed<'a>, <FF as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow, EE: Borrow, FF: Borrow, GG: Borrow> Borrow for (AA, BB, CC, DD, EE, FF, GG)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>, <EE as Borrow>::Ref<'a>, <FF as Borrow>::Ref<'a>, <GG as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>, <EE as Borrow>::Borrowed<'a>, <FF as Borrow>::Borrowed<'a>, <GG as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow, EE: Borrow, FF: Borrow, GG: Borrow, HH: Borrow> Borrow for (AA, BB, CC, DD, EE, FF, GG, HH)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>, <EE as Borrow>::Ref<'a>, <FF as Borrow>::Ref<'a>, <GG as Borrow>::Ref<'a>, <HH as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>, <EE as Borrow>::Borrowed<'a>, <FF as Borrow>::Borrowed<'a>, <GG as Borrow>::Borrowed<'a>, <HH as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow, EE: Borrow, FF: Borrow, GG: Borrow, HH: Borrow, II: Borrow> Borrow for (AA, BB, CC, DD, EE, FF, GG, HH, II)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>, <EE as Borrow>::Ref<'a>, <FF as Borrow>::Ref<'a>, <GG as Borrow>::Ref<'a>, <HH as Borrow>::Ref<'a>, <II as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a, II: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>, <EE as Borrow>::Borrowed<'a>, <FF as Borrow>::Borrowed<'a>, <GG as Borrow>::Borrowed<'a>, <HH as Borrow>::Borrowed<'a>, <II as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a, II: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a, II: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<AA: Borrow, BB: Borrow, CC: Borrow, DD: Borrow, EE: Borrow, FF: Borrow, GG: Borrow, HH: Borrow, II: Borrow, JJ: Borrow> Borrow for (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ)

Source§

type Ref<'a> = (<AA as Borrow>::Ref<'a>, <BB as Borrow>::Ref<'a>, <CC as Borrow>::Ref<'a>, <DD as Borrow>::Ref<'a>, <EE as Borrow>::Ref<'a>, <FF as Borrow>::Ref<'a>, <GG as Borrow>::Ref<'a>, <HH as Borrow>::Ref<'a>, <II as Borrow>::Ref<'a>, <JJ as Borrow>::Ref<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a, II: 'a, JJ: 'a

Source§

type Borrowed<'a> = (<AA as Borrow>::Borrowed<'a>, <BB as Borrow>::Borrowed<'a>, <CC as Borrow>::Borrowed<'a>, <DD as Borrow>::Borrowed<'a>, <EE as Borrow>::Borrowed<'a>, <FF as Borrow>::Borrowed<'a>, <GG as Borrow>::Borrowed<'a>, <HH as Borrow>::Borrowed<'a>, <II as Borrow>::Borrowed<'a>, <JJ as Borrow>::Borrowed<'a>) where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a, II: 'a, JJ: 'a

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(thing: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where AA: 'a, BB: 'a, CC: 'a, DD: 'a, EE: 'a, FF: 'a, GG: 'a, HH: 'a, II: 'a, JJ: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(thing: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<T: Clone + 'static> Borrow for Vec<T>

Source§

type Ref<'a> = &'a T

Source§

type Borrowed<'a> = &'a [T]

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(item: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where Self: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(item: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<T: Borrow> Borrow for Rc<T>

Source§

type Ref<'a> = <T as Borrow>::Ref<'a> where T: 'a

Source§

type Borrowed<'a> = <T as Borrow>::Borrowed<'a>

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(item: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where Self: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(item: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Source§

impl<T: Borrow> Borrow for Arc<T>

Source§

type Ref<'a> = <T as Borrow>::Ref<'a> where T: 'a

Source§

type Borrowed<'a> = <T as Borrow>::Borrowed<'a>

Source§

fn borrow<'a>(&'a self) -> Self::Borrowed<'a>

Source§

fn reborrow<'b, 'a: 'b>(item: Self::Borrowed<'a>) -> Self::Borrowed<'b>
where Self: 'a,

Source§

fn reborrow_ref<'b, 'a: 'b>(item: Self::Ref<'a>) -> Self::Ref<'b>
where Self: 'a,

Implementors§

Source§

impl Borrow for Strides

Source§

type Ref<'a> = u64

Source§

type Borrowed<'a> = Strides<&'a [u64], &'a u64>

Source§

impl Borrow for Empties

Source§

type Ref<'a> = ()

Source§

type Borrowed<'a> = Empties<&'a u64>

Source§

impl<BC: BorrowIndexAs<u64>> Borrow for Strings<BC, Vec<u8>>

Source§

type Ref<'a> = &'a str

Source§

type Borrowed<'a> = Strings<<BC as Borrow>::Borrowed<'a>, &'a [u8]> where BC: 'a

Source§

impl<BC: BorrowIndexAs<u64>, TC: Container> Borrow for Vecs<TC, BC>

Source§

type Ref<'a> = Slice<<TC as Borrow>::Borrowed<'a>> where TC: 'a

Source§

type Borrowed<'a> = Vecs<<TC as Borrow>::Borrowed<'a>, <BC as Borrow>::Borrowed<'a>> where BC: 'a, TC: 'a

Source§

impl<C: Borrow> Borrow for Boxed<C>

Source§

type Ref<'a> = Boxed<<C as Borrow>::Ref<'a>>

Source§

type Borrowed<'a> = Boxed<<C as Borrow>::Borrowed<'a>>

Source§

impl<CV: BorrowIndexAs<i64>> Borrow for Isizes<CV>

Source§

type Ref<'a> = isize

Source§

type Borrowed<'a> = Isizes<<CV as Borrow>::Borrowed<'a>> where CV: 'a

Source§

impl<CV: BorrowIndexAs<u32>> Borrow for Chars<CV>

Source§

type Ref<'a> = char

Source§

type Borrowed<'a> = Chars<<CV as Borrow>::Borrowed<'a>> where CV: 'a

Source§

impl<CV: BorrowIndexAs<u64> + Len> Borrow for Usizes<CV>

Source§

type Ref<'a> = usize

Source§

type Borrowed<'a> = Usizes<<CV as Borrow>::Borrowed<'a>> where CV: 'a

Source§

impl<CV: BorrowIndexAs<[u8; 16]>> Borrow for I128s<CV>

Source§

type Ref<'a> = i128

Source§

type Borrowed<'a> = I128s<<CV as Borrow>::Borrowed<'a>> where CV: 'a

Source§

impl<CV: BorrowIndexAs<[u8; 16]>> Borrow for U128s<CV>

Source§

type Ref<'a> = u128

Source§

type Borrowed<'a> = U128s<<CV as Borrow>::Borrowed<'a>> where CV: 'a

Source§

impl<SC: BorrowIndexAs<u64>, NC: BorrowIndexAs<u32>> Borrow for Durations<SC, NC>

Source§

type Ref<'a> = Duration

Source§

type Borrowed<'a> = Durations<<SC as Borrow>::Borrowed<'a>, <NC as Borrow>::Borrowed<'a>> where SC: 'a, NC: 'a

Source§

impl<SC: Borrow, TC: Borrow> Borrow for Results<SC, TC>

Source§

type Ref<'a> = Result<<SC as Borrow>::Ref<'a>, <TC as Borrow>::Ref<'a>> where SC: 'a, TC: 'a

Source§

type Borrowed<'a> = Results<<SC as Borrow>::Borrowed<'a>, <TC as Borrow>::Borrowed<'a>, &'a [u64], &'a [u64], &'a u64> where SC: 'a, TC: 'a

Source§

impl<TC: Borrow> Borrow for Options<TC>

Source§

type Ref<'a> = Option<<TC as Borrow>::Ref<'a>> where TC: 'a

Source§

type Borrowed<'a> = Options<<TC as Borrow>::Borrowed<'a>, &'a [u64], &'a [u64], &'a u64> where TC: 'a

Source§

impl<VC: BorrowIndexAs<u64>> Borrow for Bools<VC>

Source§

type Ref<'a> = bool

Source§

type Borrowed<'a> = Bools<<VC as Borrow>::Borrowed<'a>, &'a u64> where VC: 'a

Source§

impl<const K: u64> Borrow for Fixeds<K>

Source§

type Ref<'a> = u64

Source§

type Borrowed<'a> = Fixeds<K, &'a u64>