Struct dcsv::VirtualData
source · pub struct VirtualData {
pub metas: Vec<Meta>,
pub columns: Vec<Column>,
pub rows: Vec<Row>,
}Expand description
Virtual data struct which contains csv information
- VirtualData holds row information as hashmap. Therefore modifying data( cell, row or column ) is generally faster than virtual array struct.
- VirtualData cannot have duplicate column name due to previous hashmap implementaiton
- VirtualData allows limiters to confine csv value’s possible states.
Fields§
§metas: Vec<Meta>§columns: Vec<Column>§rows: Vec<Row>Implementations§
source§impl VirtualData
impl VirtualData
sourcepub fn read_only(&self) -> ReadOnlyData
pub fn read_only(&self) -> ReadOnlyData
Get read only data from virtual data
This clones every value into a ReadOnlyData. If the purpose is to simply iterate over values, prefer read_only_ref method.
sourcepub fn read_only_ref(&self) -> ReadOnlyDataRef<'_>
pub fn read_only_ref(&self) -> ReadOnlyDataRef<'_>
Get read only data from virtual data, but as reference
sourcepub fn set_cell_from_string(
&mut self,
x: usize,
y: usize,
value: &str
) -> DcsvResult<()>
pub fn set_cell_from_string( &mut self, x: usize, y: usize, value: &str ) -> DcsvResult<()>
Set cell’s value with given string value
This will fail if the value cannot be converted to column’s type
sourcepub fn insert_column_with_type(
&mut self,
column_index: usize,
column_name: &str,
column_type: ValueType,
limiter: Option<ValueLimiter>,
placeholder: Option<Value>
) -> DcsvResult<()>
pub fn insert_column_with_type( &mut self, column_index: usize, column_name: &str, column_type: ValueType, limiter: Option<ValueLimiter>, placeholder: Option<Value> ) -> DcsvResult<()>
Insert a column with given column informations
Args
- column_index : Position to put column
- column_name : New column name
- column_type : Column’s type
- limiter : Set limiter with
- placeholder : Placeholder will be applied to every row
sourcepub fn set_limiter(
&mut self,
column: usize,
limiter: &ValueLimiter,
panic: bool
) -> DcsvResult<()>
pub fn set_limiter( &mut self, column: usize, limiter: &ValueLimiter, panic: bool ) -> DcsvResult<()>
Set a limiter to a column
Args
- column : column’s index
- limiter : Target limiter
- panic : If true, failed set will occur panic
sourcepub fn qualify(
&self,
column: usize,
limiter: &ValueLimiter
) -> DcsvResult<Vec<&Row>>
pub fn qualify( &self, column: usize, limiter: &ValueLimiter ) -> DcsvResult<Vec<&Row>>
Qualify data and get reference of qualifed rows.
sourcepub fn qualify_multiple(
&self,
qualifiers: Vec<(usize, &ValueLimiter)>
) -> DcsvResult<Vec<&Row>>
pub fn qualify_multiple( &self, qualifiers: Vec<(usize, &ValueLimiter)> ) -> DcsvResult<Vec<&Row>>
Qualify data with multiple limiters and get reference of qualifed rows.
sourcepub fn export_schema(&self) -> String
pub fn export_schema(&self) -> String
Export virtual data’s schema(limiter) as string form
Schema is expressed as csv value. Each line is structured with following order.
- column
- type
- default
- variant
- pattern
sourcepub fn try_get_column_index(&self, src: &str) -> Option<usize>
pub fn try_get_column_index(&self, src: &str) -> Option<usize>
Get a column index from src
Src can be either colum name or column index If colum index is out of range, it returns none
sourcepub fn get_iterator(&self) -> IntoIter<&Value>
pub fn get_iterator(&self) -> IntoIter<&Value>
Get iterator.
This methods returns iterator which respects column orders
sourcepub fn get_column_iterator(
&self,
column_index: usize
) -> DcsvResult<IntoIter<&Value>>
pub fn get_column_iterator( &self, column_index: usize ) -> DcsvResult<IntoIter<&Value>>
Get iterator of a column with given index
sourcepub fn get_row_iterator(&self, row_index: usize) -> DcsvResult<IntoIter<&Value>>
pub fn get_row_iterator(&self, row_index: usize) -> DcsvResult<IntoIter<&Value>>
Get iterator of a row with given index
This respects columns orders
Trait Implementations§
source§impl Clone for VirtualData
impl Clone for VirtualData
source§fn clone(&self) -> VirtualData
fn clone(&self) -> VirtualData
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Default for VirtualData
impl Default for VirtualData
source§impl Display for VirtualData
impl Display for VirtualData
to_string implementation for virtual data
This returns csv value string
source§impl From<&VirtualData> for ReadOnlyData
impl From<&VirtualData> for ReadOnlyData
source§fn from(data: &VirtualData) -> Self
fn from(data: &VirtualData) -> Self
source§impl<'data> From<&'data VirtualData> for ReadOnlyDataRef<'data>
impl<'data> From<&'data VirtualData> for ReadOnlyDataRef<'data>
source§fn from(data: &'data VirtualData) -> Self
fn from(data: &'data VirtualData) -> Self
source§impl VCont for VirtualData
impl VCont for VirtualData
source§fn move_row(&mut self, src_index: usize, target_index: usize) -> DcsvResult<()>
fn move_row(&mut self, src_index: usize, target_index: usize) -> DcsvResult<()>
Move given row to a target row index
source§fn move_column(
&mut self,
src_index: usize,
target_index: usize
) -> DcsvResult<()>
fn move_column( &mut self, src_index: usize, target_index: usize ) -> DcsvResult<()>
Move a given column to target column index
source§fn rename_column(
&mut self,
column_index: usize,
new_name: &str
) -> DcsvResult<()>
fn rename_column( &mut self, column_index: usize, new_name: &str ) -> DcsvResult<()>
Rename a column
Column’s name cannot be an exsiting name
- column : column_index
- new_name : New column name
source§fn set_column(&mut self, column_index: usize, value: Value) -> DcsvResult<()>
fn set_column(&mut self, column_index: usize, value: Value) -> DcsvResult<()>
Set values to a column
Given value will override every row’s value
source§fn edit_row(
&mut self,
row_index: usize,
values: &[Option<Value>]
) -> DcsvResult<()>
fn edit_row( &mut self, row_index: usize, values: &[Option<Value>] ) -> DcsvResult<()>
Edit a row
Only edit row’s cell when value is not none
source§fn set_row(&mut self, row_index: usize, values: &[Value]) -> DcsvResult<()>
fn set_row(&mut self, row_index: usize, values: &[Value]) -> DcsvResult<()>
Set values to a row
This assumes that given values accord to column’s order. This method will fail when given value fails to qualify column’s limiter.
source§fn set_cell(&mut self, x: usize, y: usize, value: Value) -> DcsvResult<()>
fn set_cell(&mut self, x: usize, y: usize, value: Value) -> DcsvResult<()>
Set cell value by coordinate
source§fn insert_row(
&mut self,
row_index: usize,
source: Option<&[Value]>
) -> DcsvResult<()>
fn insert_row( &mut self, row_index: usize, source: Option<&[Value]> ) -> DcsvResult<()>
Insert a row to given index
This can yield out of range error
source§fn delete_row(&mut self, row_index: usize) -> bool
fn delete_row(&mut self, row_index: usize) -> bool
Delete a row with given row_index
This doesn’t fail but silently do nothing if index is out of range
source§fn delete_column(&mut self, column_index: usize) -> DcsvResult<()>
fn delete_column(&mut self, column_index: usize) -> DcsvResult<()>
Delete a column with given column index
source§fn get_row_count(&self) -> usize
fn get_row_count(&self) -> usize
Get total rows count
source§fn get_column_count(&self) -> usize
fn get_column_count(&self) -> usize
Get total columns count