Struct flatcontainer::impls::columns::ColumnsRegion
source · pub struct ColumnsRegion<R>where
R: Region,{ /* private fields */ }
Expand description
A region that can store a variable number of elements per row.
The region is backed by a number of columns, where the number depends on the length of the longest row encountered. For pushed row, the region remembers the indices into each column that populated. Rows can have different lengths, which means that only the first columns will contain a value.
All columns have the same type R
.
§Examples
Copy a table-like structure:
let data = [
vec![],
vec!["1"],
vec!["2", "3"],
vec!["4", "5", "6"],
vec!["7", "8"],
vec!["9"],
vec![],
];
let mut r = <ColumnsRegion<ConsecutiveOffsetPairs<StringRegion>>>::default();
let mut indices = Vec::with_capacity(data.len());
for row in &data {
let index = r.push(row);
indices.push(index);
}
for (&index, row) in indices.iter().zip(&data) {
assert!(row.iter().copied().eq(r.index(index).iter()));
}
Trait Implementations§
source§impl<R> Clone for ColumnsRegion<R>
impl<R> Clone for ColumnsRegion<R>
source§impl<R> Debug for ColumnsRegion<R>
impl<R> Debug for ColumnsRegion<R>
source§impl<R> Default for ColumnsRegion<R>where
R: Region,
impl<R> Default for ColumnsRegion<R>where
R: Region,
source§impl<'de, R> Deserialize<'de> for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
R::Index: Serialize + for<'a> Deserialize<'a>,
impl<'de, R> Deserialize<'de> for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
R::Index: Serialize + for<'a> Deserialize<'a>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<'a, R, T> Push<&'a [T]> for ColumnsRegion<R>
impl<'a, R, T> Push<&'a [T]> for ColumnsRegion<R>
source§impl<'a, R, T> Push<&'a Vec<T>> for ColumnsRegion<R>
impl<'a, R, T> Push<&'a Vec<T>> for ColumnsRegion<R>
source§impl<R, T, I> Push<CopyIter<I>> for ColumnsRegion<R>
impl<R, T, I> Push<CopyIter<I>> for ColumnsRegion<R>
source§impl<R> Push<ReadColumns<'_, R>> for ColumnsRegion<R>
impl<R> Push<ReadColumns<'_, R>> for ColumnsRegion<R>
source§fn push(
&mut self,
item: ReadColumns<'_, R>,
) -> <ColumnsRegion<R> as Region>::Index
fn push( &mut self, item: ReadColumns<'_, R>, ) -> <ColumnsRegion<R> as Region>::Index
Push
item
into self, returning an index that allows to look up the
corresponding read item.source§impl<R, T> Push<Vec<T>> for ColumnsRegion<R>
impl<R, T> Push<Vec<T>> for ColumnsRegion<R>
source§impl<R> Region for ColumnsRegion<R>where
R: Region,
impl<R> Region for ColumnsRegion<R>where
R: Region,
§type ReadItem<'a> = ReadColumns<'a, R>
where
Self: 'a
type ReadItem<'a> = ReadColumns<'a, R> where Self: 'a
The type of the data that one gets out of the container.
§type Index = usize
type Index = usize
The type to index into the container. Should be treated
as an opaque type, even if known.
source§fn merge_regions<'a>(regions: impl Iterator<Item = &'a Self> + Clone) -> Selfwhere
Self: 'a,
fn merge_regions<'a>(regions: impl Iterator<Item = &'a Self> + Clone) -> Selfwhere
Self: 'a,
Construct a region that can absorb the contents of
regions
in the future.source§fn index(&self, index: Self::Index) -> Self::ReadItem<'_>
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)
fn reserve_regions<'a, I>(&mut self, regions: I)
Ensure that the region can absorb the items of
regions
without reallocationsource§impl<R> Serialize for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
R::Index: Serialize + for<'a> Deserialize<'a>,
impl<R> Serialize for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
R::Index: Serialize + for<'a> Deserialize<'a>,
Auto Trait Implementations§
impl<R> Freeze for ColumnsRegion<R>
impl<R> RefUnwindSafe for ColumnsRegion<R>
impl<R> Send for ColumnsRegion<R>
impl<R> Sync for ColumnsRegion<R>
impl<R> Unpin for ColumnsRegion<R>
impl<R> UnwindSafe for ColumnsRegion<R>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)