Trait timely::container::flatcontainer::Region

source ·
pub trait Region: Default {
    type ReadItem<'a>: CopyOnto<Self>
       where Self: 'a;
    type Index: Index;

    // Required methods
    fn merge_regions<'a>(
        regions: impl Iterator<Item = &'a Self> + Clone
    ) -> Self
       where Self: 'a;
    fn index(&self, index: Self::Index) -> Self::ReadItem<'_>;
    fn reserve_regions<'a, I>(&mut self, regions: I)
       where Self: 'a,
             I: Iterator<Item = &'a Self> + Clone;
    fn clear(&mut self);
    fn heap_size<F>(&self, callback: F)
       where F: FnMut(usize, usize);
}
Expand description

A region to absorb presented data and present it as a type with a lifetime.

This type absorbs data and provides an index to look up an equivalent representation of this data at a later time. It is up to an implementation to select the appropriate presentation of the data, and what data it can absorb.

Implement the CopyOnto trait for all types that can be copied into a region.

Required Associated Types§

source

type ReadItem<'a>: CopyOnto<Self> where Self: 'a

The type of the data that one gets out of the container.

source

type Index: Index

The type to index into the container. Should be treated as an opaque type, even if known.

Required Methods§

source

fn merge_regions<'a>(regions: impl Iterator<Item = &'a Self> + Clone) -> Self
where Self: 'a,

Construct a region that can absorb the contents of regions in the future.

source

fn index(&self, index: Self::Index) -> Self::ReadItem<'_>

Index into the container. The index must be obtained by pushing data into the container.

source

fn reserve_regions<'a, I>(&mut self, regions: I)
where Self: 'a, I: Iterator<Item = &'a Self> + Clone,

Ensure that the region can absorb the items of regions without reallocation

source

fn clear(&mut self)

Remove all elements from this region, but retain allocations if possible.

source

fn heap_size<F>(&self, callback: F)
where F: FnMut(usize, usize),

Heap size, size - capacity

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<A> Region for TupleARegion<A>
where A: Region, <A as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>,) where TupleARegion<A>: 'a

§

type Index = (<A as Region>::Index,)

source§

impl<A, B> Region for TupleABRegion<A, B>
where A: Region, B: Region, <A as Region>::Index: Index, <B as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>) where TupleABRegion<A, B>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index)

source§

impl<A, B, C> Region for TupleABCRegion<A, B, C>
where A: Region, B: Region, C: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>) where TupleABCRegion<A, B, C>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index)

source§

impl<A, B, C, D> Region for TupleABCDRegion<A, B, C, D>
where A: Region, B: Region, C: Region, D: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>) where TupleABCDRegion<A, B, C, D>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index)

source§

impl<A, B, C, D, E> Region for TupleABCDERegion<A, B, C, D, E>
where A: Region, B: Region, C: Region, D: Region, E: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>) where TupleABCDERegion<A, B, C, D, E>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index)

source§

impl<A, B, C, D, E, F> Region for TupleABCDEFRegion<A, B, C, D, E, F>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>) where TupleABCDEFRegion<A, B, C, D, E, F>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index)

source§

impl<A, B, C, D, E, F, G> Region for TupleABCDEFGRegion<A, B, C, D, E, F, G>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>) where TupleABCDEFGRegion<A, B, C, D, E, F, G>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H> Region for TupleABCDEFGHRegion<A, B, C, D, E, F, G, H>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>) where TupleABCDEFGHRegion<A, B, C, D, E, F, G, H>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I> Region for TupleABCDEFGHIRegion<A, B, C, D, E, F, G, H, I>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>) where TupleABCDEFGHIRegion<A, B, C, D, E, F, G, H, I>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J> Region for TupleABCDEFGHIJRegion<A, B, C, D, E, F, G, H, I, J>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>) where TupleABCDEFGHIJRegion<A, B, C, D, E, F, G, H, I, J>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J, K> Region for TupleABCDEFGHIJKRegion<A, B, C, D, E, F, G, H, I, J, K>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index, <K as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>, <K as Region>::ReadItem<'a>) where TupleABCDEFGHIJKRegion<A, B, C, D, E, F, G, H, I, J, K>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index, <K as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> Region for TupleABCDEFGHIJKLRegion<A, B, C, D, E, F, G, H, I, J, K, L>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, L: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index, <K as Region>::Index: Index, <L as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>, <K as Region>::ReadItem<'a>, <L as Region>::ReadItem<'a>) where TupleABCDEFGHIJKLRegion<A, B, C, D, E, F, G, H, I, J, K, L>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index, <K as Region>::Index, <L as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> Region for TupleABCDEFGHIJKLMRegion<A, B, C, D, E, F, G, H, I, J, K, L, M>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, L: Region, M: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index, <K as Region>::Index: Index, <L as Region>::Index: Index, <M as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>, <K as Region>::ReadItem<'a>, <L as Region>::ReadItem<'a>, <M as Region>::ReadItem<'a>) where TupleABCDEFGHIJKLMRegion<A, B, C, D, E, F, G, H, I, J, K, L, M>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index, <K as Region>::Index, <L as Region>::Index, <M as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N> Region for TupleABCDEFGHIJKLMNRegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, L: Region, M: Region, N: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index, <K as Region>::Index: Index, <L as Region>::Index: Index, <M as Region>::Index: Index, <N as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>, <K as Region>::ReadItem<'a>, <L as Region>::ReadItem<'a>, <M as Region>::ReadItem<'a>, <N as Region>::ReadItem<'a>) where TupleABCDEFGHIJKLMNRegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index, <K as Region>::Index, <L as Region>::Index, <M as Region>::Index, <N as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> Region for TupleABCDEFGHIJKLMNORegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, L: Region, M: Region, N: Region, O: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index, <K as Region>::Index: Index, <L as Region>::Index: Index, <M as Region>::Index: Index, <N as Region>::Index: Index, <O as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>, <K as Region>::ReadItem<'a>, <L as Region>::ReadItem<'a>, <M as Region>::ReadItem<'a>, <N as Region>::ReadItem<'a>, <O as Region>::ReadItem<'a>) where TupleABCDEFGHIJKLMNORegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index, <K as Region>::Index, <L as Region>::Index, <M as Region>::Index, <N as Region>::Index, <O as Region>::Index)

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> Region for TupleABCDEFGHIJKLMNOPRegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>
where A: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, L: Region, M: Region, N: Region, O: Region, P: Region, <A as Region>::Index: Index, <B as Region>::Index: Index, <C as Region>::Index: Index, <D as Region>::Index: Index, <E as Region>::Index: Index, <F as Region>::Index: Index, <G as Region>::Index: Index, <H as Region>::Index: Index, <I as Region>::Index: Index, <J as Region>::Index: Index, <K as Region>::Index: Index, <L as Region>::Index: Index, <M as Region>::Index: Index, <N as Region>::Index: Index, <O as Region>::Index: Index, <P as Region>::Index: Index,

§

type ReadItem<'a> = (<A as Region>::ReadItem<'a>, <B as Region>::ReadItem<'a>, <C as Region>::ReadItem<'a>, <D as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>, <F as Region>::ReadItem<'a>, <G as Region>::ReadItem<'a>, <H as Region>::ReadItem<'a>, <I as Region>::ReadItem<'a>, <J as Region>::ReadItem<'a>, <K as Region>::ReadItem<'a>, <L as Region>::ReadItem<'a>, <M as Region>::ReadItem<'a>, <N as Region>::ReadItem<'a>, <O as Region>::ReadItem<'a>, <P as Region>::ReadItem<'a>) where TupleABCDEFGHIJKLMNOPRegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>: 'a

§

type Index = (<A as Region>::Index, <B as Region>::Index, <C as Region>::Index, <D as Region>::Index, <E as Region>::Index, <F as Region>::Index, <G as Region>::Index, <H as Region>::Index, <I as Region>::Index, <J as Region>::Index, <K as Region>::Index, <L as Region>::Index, <M as Region>::Index, <N as Region>::Index, <O as Region>::Index, <P as Region>::Index)

source§

impl<C, O> Region for SliceRegion<C, O>
where C: Region, O: OffsetContainer<<C as Region>::Index>,

§

type ReadItem<'a> = ReadSlice<'a, C, O> where SliceRegion<C, O>: 'a

§

type Index = (usize, usize)

source§

impl<C, R> Region for CodecRegion<C, R>
where C: Codec, R: for<'a> Region<ReadItem<'a> = &'a [u8]> + 'a, &'a [u8]: for<'a> CopyOnto<R>,

§

type ReadItem<'a> = &'a [u8] where CodecRegion<C, R>: 'a

§

type Index = <R as Region>::Index

source§

impl<R> Region for CollapseSequence<R>
where R: Region, <R as Region>::ReadItem<'a>: for<'a, 'b> PartialEq<<R as Region>::ReadItem<'b>>,

§

type ReadItem<'a> = <R as Region>::ReadItem<'a> where CollapseSequence<R>: 'a

§

type Index = <R as Region>::Index

source§

impl<R> Region for OptionRegion<R>
where R: Region,

§

type ReadItem<'a> = Option<<R as Region>::ReadItem<'a>> where OptionRegion<R>: 'a

§

type Index = Option<<R as Region>::Index>

source§

impl<R> Region for StringRegion<R>
where R: for<'a> Region<ReadItem<'a> = &'a [u8]> + 'a, &'a [u8]: for<'a> CopyOnto<R>,

§

type ReadItem<'a> = &'a str where StringRegion<R>: 'a

§

type Index = <R as Region>::Index

source§

impl<R, Idx> Region for ColumnsRegion<R, Idx>
where R: Region<Index = Idx>, Idx: Index,

§

type ReadItem<'a> = ReadColumns<'a, R, Idx> where ColumnsRegion<R, Idx>: 'a

§

type Index = usize

source§

impl<R, O> Region for ConsecutiveOffsetPairs<R, O>
where R: Region<Index = (usize, usize)>, O: OffsetContainer<usize>,

§

type ReadItem<'a> = <R as Region>::ReadItem<'a> where ConsecutiveOffsetPairs<R, O>: 'a

§

type Index = usize

source§

impl<T> Region for CopyRegion<T>
where T: Copy,

§

type ReadItem<'a> = &'a [T] where CopyRegion<T>: 'a

§

type Index = (usize, usize)

source§

impl<T> Region for MirrorRegion<T>
where T: Index + CopyOnto<MirrorRegion<T>>,

§

type ReadItem<'a> = T where T: 'a

§

type Index = T

source§

impl<T, E> Region for ResultRegion<T, E>
where T: Region, E: Region,

§

type ReadItem<'a> = Result<<T as Region>::ReadItem<'a>, <E as Region>::ReadItem<'a>> where ResultRegion<T, E>: 'a

§

type Index = Result<<T as Region>::Index, <E as Region>::Index>