pub struct InMemoryTable {
pub columns: Vec<ColumnSchema>,
pub rows: Vec<Vec<ColumnValue>>,
pub name: Option<String>,
}Expand description
A columnar in-memory table.
Data is stored in row-major form (Vec<Vec<ColumnValue>>) to simplify row
operations like filtering and joining, while still supporting column projection.
Fields§
§columns: Vec<ColumnSchema>Column schemas (ordered)
rows: Vec<Vec<ColumnValue>>Row data: each row is Vec<ColumnValue> with one entry per column
name: Option<String>Optional table name
Implementations§
Source§impl InMemoryTable
impl InMemoryTable
Sourcepub fn new(columns: Vec<(String, ColumnType)>) -> Self
pub fn new(columns: Vec<(String, ColumnType)>) -> Self
Create a new empty table with the given column name/type pairs.
Sourcepub fn column_count(&self) -> usize
pub fn column_count(&self) -> usize
Return the number of columns.
Sourcepub fn column_index(&self, name: &str) -> Option<usize>
pub fn column_index(&self, name: &str) -> Option<usize>
Return column index by name.
Sourcepub fn push_row(&mut self, row: &[ColumnValue]) -> Result<()>
pub fn push_row(&mut self, row: &[ColumnValue]) -> Result<()>
Add a row. Returns an error if the row length doesn’t match the schema.
Sourcepub fn push_row_map(&mut self, map: HashMap<String, ColumnValue>) -> Result<()>
pub fn push_row_map(&mut self, map: HashMap<String, ColumnValue>) -> Result<()>
Add a row from a map. Missing columns get NULL.
Sourcepub fn get_column(&self, name: &str) -> Option<Vec<&ColumnValue>>
pub fn get_column(&self, name: &str) -> Option<Vec<&ColumnValue>>
Get a column as a slice of values.
Sourcepub fn row_as_map(&self, row_idx: usize) -> Option<HashMap<String, ColumnValue>>
pub fn row_as_map(&self, row_idx: usize) -> Option<HashMap<String, ColumnValue>>
Return a row as a HashMap.
Sourcepub fn to_json_rows(&self) -> Vec<Value>
pub fn to_json_rows(&self) -> Vec<Value>
Return rows as a Vec of JSON objects.
Sourcepub fn append(&mut self, other: &InMemoryTable) -> Result<()>
pub fn append(&mut self, other: &InMemoryTable) -> Result<()>
Append all rows from another table (must have compatible schemas).
Trait Implementations§
Source§impl Clone for InMemoryTable
impl Clone for InMemoryTable
Source§fn clone(&self) -> InMemoryTable
fn clone(&self) -> InMemoryTable
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for InMemoryTable
impl Debug for InMemoryTable
Source§impl Default for InMemoryTable
impl Default for InMemoryTable
Source§fn default() -> InMemoryTable
fn default() -> InMemoryTable
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for InMemoryTable
impl<'de> Deserialize<'de> for InMemoryTable
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
Auto Trait Implementations§
impl Freeze for InMemoryTable
impl RefUnwindSafe for InMemoryTable
impl Send for InMemoryTable
impl Sync for InMemoryTable
impl Unpin for InMemoryTable
impl UnsafeUnpin for InMemoryTable
impl UnwindSafe for InMemoryTable
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.