Trait 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: FnMut(usize, usize)>(&self, callback: F);
}
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: FnMut(usize, usize)>(&self, callback: F)

Heap size, size - capacity

Object Safety§

This trait is not object safe.

Implementors§

source§

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

§

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

§

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

source§

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

§

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

§

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

source§

impl<A: Region, B: Region, C: Region> Region for TupleABCRegion<A, B, C>
where <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 Self: 'a

§

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

source§

impl<A: Region, B: Region, C: Region, D: Region> Region for TupleABCDRegion<A, B, C, D>
where <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 Self: 'a

§

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

source§

impl<A: Region, B: Region, C: Region, D: Region, E: Region> Region for TupleABCDERegion<A, B, C, D, E>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region> Region for TupleABCDEFRegion<A, B, C, D, E, F>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region> Region for TupleABCDEFGRegion<A, B, C, D, E, F, G>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region> Region for TupleABCDEFGHRegion<A, B, C, D, E, F, G, H>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region> Region for TupleABCDEFGHIRegion<A, B, C, D, E, F, G, H, I>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region> Region for TupleABCDEFGHIJRegion<A, B, C, D, E, F, G, H, I, J>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region> Region for TupleABCDEFGHIJKRegion<A, B, C, D, E, F, G, H, I, J, K>
where <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 Self: '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: Region, B: Region, C: Region, D: Region, E: Region, F: Region, G: Region, H: Region, I: Region, J: Region, K: Region, L: Region> Region for TupleABCDEFGHIJKLRegion<A, B, C, D, E, F, G, H, I, J, K, L>
where <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 Self: '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: 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> Region for TupleABCDEFGHIJKLMRegion<A, B, C, D, E, F, G, H, I, J, K, L, M>
where <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 Self: '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: 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> Region for TupleABCDEFGHIJKLMNRegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N>
where <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 Self: '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: 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> Region for TupleABCDEFGHIJKLMNORegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>
where <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 Self: '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: 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> Region for TupleABCDEFGHIJKLMNOPRegion<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>
where <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 Self: '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: Codec, R> Region for CodecRegion<C, R>
where for<'a> R: Region<ReadItem<'a> = &'a [u8]> + 'a, for<'a> &'a [u8]: CopyOnto<R>,

§

type ReadItem<'a> = &'a [u8] where Self: 'a

§

type Index = <R as Region>::Index

source§

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

§

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

§

type Index = (usize, usize)

source§

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

§

type ReadItem<'a> = &'a str where Self: '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 Self: 'a

§

type Index = usize

source§

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

§

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

§

type Index = <R as Region>::Index

source§

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

§

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

§

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

source§

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

§

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

§

type Index = usize

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 Self: 'a

§

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

source§

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

§

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

§

type Index = (usize, usize)

source§

impl<T: Index + CopyOnto<Self>> Region for MirrorRegion<T>

§

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

§

type Index = T