Skip to main content

Borrow

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.

Implementations should most likely be marked #[inline(always)].

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".

Implementations on Foreign Types§

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<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> 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> 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> 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> 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> 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> 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> 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> 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<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,

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: 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,

Implementors§

Source§

impl Borrow for Discriminant

Source§

type Ref<'a> = (u8, u64)

Source§

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

Source§

impl Borrow for Empties

Source§

type Ref<'a> = ()

Source§

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

Source§

impl Borrow for Strides

Source§

type Ref<'a> = u64

Source§

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

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<BC: BorrowIndexAs<u64>> Borrow for Strings<BC, Vec<u8>>

Source§

type Ref<'a> = &'a [u8]

Source§

type Borrowed<'a> = Strings<<BC as Borrow>::Borrowed<'a>, &'a [u8]> where BC: '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<C: ContainerBytes, B: Deref<Target = [u8]> + Clone + 'static> Borrow for Stash<C, B>

Source§

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

Source§

type Borrowed<'a> = <C as Borrow>::Borrowed<'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<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<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<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<TC: Borrow, const N: u8> Borrow for Lookbacks<TC, Vec<u8>, Vec<u64>, Vec<u64>, [u64; 2], N>

Source§

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

Source§

type Borrowed<'a> = Lookbacks<<TC as Borrow>::Borrowed<'a>, &'a [u8], &'a [u64], &'a [u64], &'a [u64], N> where 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<TC: Borrow> Borrow for Repeats<TC>

Source§

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

Source§

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

Source§

impl<TC: Borrow> Borrow for Trees<TC>

Source§

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

Source§

type Borrowed<'a> = Trees<<TC as Borrow>::Borrowed<'a>, &'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>