Struct timely::container::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§fn clone(&self) -> ColumnsRegion<R>
fn clone(&self) -> ColumnsRegion<R>
Returns a copy of the value. Read more
source§fn clone_from(&mut self, source: &ColumnsRegion<R>)
fn clone_from(&mut self, source: &ColumnsRegion<R>)
Performs copy-assignment from
source
. Read moresource§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§fn default() -> ColumnsRegion<R>
fn default() -> ColumnsRegion<R>
Returns the “default value” for a type. Read more
source§impl<'de, R> Deserialize<'de> for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
<R as Region>::Index: Serialize + for<'a> Deserialize<'a>,
impl<'de, R> Deserialize<'de> for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
<R as Region>::Index: Serialize + for<'a> Deserialize<'a>,
source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ColumnsRegion<R>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ColumnsRegion<R>, <__D as Deserializer<'de>>::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
ColumnsRegion<R>: 'a
type ReadItem<'a> = ReadColumns<'a, R> where ColumnsRegion<R>: '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 ColumnsRegion<R>> + Clone,
) -> ColumnsRegion<R>where
ColumnsRegion<R>: 'a,
fn merge_regions<'a>(
regions: impl Iterator<Item = &'a ColumnsRegion<R>> + Clone,
) -> ColumnsRegion<R>where
ColumnsRegion<R>: 'a,
Construct a region that can absorb the contents of
regions
in the future.source§fn index(
&self,
index: <ColumnsRegion<R> as Region>::Index,
) -> <ColumnsRegion<R> as Region>::ReadItem<'_>
fn index( &self, index: <ColumnsRegion<R> as Region>::Index, ) -> <ColumnsRegion<R> as Region>::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§fn reborrow<'b, 'a>(
item: <ColumnsRegion<R> as Region>::ReadItem<'a>,
) -> <ColumnsRegion<R> as Region>::ReadItem<'b>where
'a: 'b,
ColumnsRegion<R>: 'a,
fn reborrow<'b, 'a>(
item: <ColumnsRegion<R> as Region>::ReadItem<'a>,
) -> <ColumnsRegion<R> as Region>::ReadItem<'b>where
'a: 'b,
ColumnsRegion<R>: 'a,
Converts a read item into one with a narrower lifetime.
source§impl<R> Serialize for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
<R as Region>::Index: Serialize + for<'a> Deserialize<'a>,
impl<R> Serialize for ColumnsRegion<R>where
R: Region + Serialize + for<'a> Deserialize<'a>,
<R as Region>::Index: Serialize + for<'a> Deserialize<'a>,
source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
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
)