differential_dataflow::trace::implementations::containers

Trait BatchContainer

Source
pub trait BatchContainer: for<'a> PushInto<Self::ReadItem<'a>> + 'static {
    type Owned;
    type ReadItem<'a>: Copy + Ord + IntoOwned<'a, Owned = Self::Owned>;

    // Required methods
    fn with_capacity(size: usize) -> Self;
    fn merge_capacity(cont1: &Self, cont2: &Self) -> Self;
    fn reborrow<'b, 'a: 'b>(item: Self::ReadItem<'a>) -> Self::ReadItem<'b>;
    fn index(&self, index: usize) -> Self::ReadItem<'_>;
    fn len(&self) -> usize;

    // Provided methods
    fn push<D>(&mut self, item: D)
       where Self: PushInto<D> { ... }
    fn last(&self) -> Option<Self::ReadItem<'_>> { ... }
    fn is_empty(&self) -> bool { ... }
    fn advance<F: for<'a> Fn(Self::ReadItem<'a>) -> bool>(
        &self,
        start: usize,
        end: usize,
        function: F,
    ) -> usize { ... }
}
Expand description

A general-purpose container resembling Vec<T>.

Required Associated Types§

Source

type Owned

An owned instance of Self::ReadItem<'_>.

Source

type ReadItem<'a>: Copy + Ord + IntoOwned<'a, Owned = Self::Owned>

The type that can be read back out of the container.

Required Methods§

Source

fn with_capacity(size: usize) -> Self

Creates a new container with sufficient capacity.

Source

fn merge_capacity(cont1: &Self, cont2: &Self) -> Self

Creates a new container with sufficient capacity.

Source

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

Converts a read item into one with a narrower lifetime.

Source

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

Reference to the element at this position.

Source

fn len(&self) -> usize

Number of contained elements

Provided Methods§

Source

fn push<D>(&mut self, item: D)
where Self: PushInto<D>,

Push an item into this container

Source

fn last(&self) -> Option<Self::ReadItem<'_>>

Returns the last item if the container is non-empty.

Source

fn is_empty(&self) -> bool

Indicates if the length is zero.

Source

fn advance<F: for<'a> Fn(Self::ReadItem<'a>) -> bool>( &self, start: usize, end: usize, function: F, ) -> usize

Reports the number of elements satisfying the predicate.

This methods relies strongly on the assumption that the predicate stays false once it becomes false, a joint property of the predicate and the layout of Self. This allows advance` to use exponential search to count the number of elements in time logarithmic in the result.

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<R> BatchContainer for FlatStack<R>
where for<'a> R: Region + Push<<R as Region>::ReadItem<'a>> + 'static, for<'a> R::ReadItem<'a>: Copy + Ord,

Source§

type Owned = <R as Region>::Owned

Source§

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

Source§

fn with_capacity(size: usize) -> Self

Source§

fn merge_capacity(cont1: &Self, cont2: &Self) -> Self

Source§

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

Source§

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

Source§

fn len(&self) -> usize

Source§

impl<T: Clone + Ord + Columnation + 'static> BatchContainer for TimelyStack<T>

Source§

type Owned = T

Source§

type ReadItem<'a> = &'a T

Source§

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

Source§

fn with_capacity(size: usize) -> Self

Source§

fn merge_capacity(cont1: &Self, cont2: &Self) -> Self

Source§

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

Source§

fn len(&self) -> usize

Source§

impl<T: Ord + Clone + 'static> BatchContainer for Vec<T>

Source§

type Owned = T

Source§

type ReadItem<'a> = &'a T

Source§

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

Source§

fn with_capacity(size: usize) -> Self

Source§

fn merge_capacity(cont1: &Self, cont2: &Self) -> Self

Source§

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

Source§

fn len(&self) -> usize

Implementors§

Source§

impl BatchContainer for OffsetList

Source§

impl<B> BatchContainer for SliceContainer<B>
where B: Ord + Clone + Sized + 'static,

Source§

type Owned = Vec<B>

Source§

type ReadItem<'a> = &'a [B]

Source§

impl<B: Ord + Clone + 'static> BatchContainer for HuffmanContainer<B>

Source§

type Owned = Vec<B>

Source§

type ReadItem<'a> = Wrapped<'a, B>