[][src]Function sorer::parsers::parse_line_with_schema

pub fn parse_line_with_schema(
    i: &[u8],
    schema: &Vec<DataType>
) -> Option<Vec<Data>>

Parses a row of SoR data, i (as a &[u8]), into a Option<Vec<Data>>, returning Some if the data types in i matches the schema. If the data types match, but i contains fewer fields than schema, than Data::Null is inserted. If the row has more fields than schema, then the extra fields are discarded.

Further information on how parsing with schemas can be found here and here

Examples

use sorer::schema::DataType;
use sorer::parsers::parse_line_with_schema;
use sorer::dataframe::Data;

let i = b"< 1 > < hi >";
let s = vec![DataType::Bool, DataType::String];

assert_eq!(Some(vec![Data::Bool(true),
                 Data::String(String::from("hi"))]),
           parse_line_with_schema(i, &s));

Safety

This function calls std::str::from_utf8_unchecked, meaning that it does not check that the bytes passed to it are valid UTF-8. If this constraint is violated, undefined behavior results, as the rest of Rust assumes that &strs are valid UTF-8.

Since SoR files are guaranteed to only contain valid C++ strings, and thus only valid utf-8, then this constraint only applies to consumers of the crate and not users of the SoRer executable.