Trait planus::ReadAsRoot

source ·
pub trait ReadAsRoot<'a>: Sized {
    // Required method
    fn read_as_root(slice: &'a [u8]) -> Result<Self>;
}
Expand description

Interface for getting a view into serialized data.

To get an owned variant use TryInto on the Ref type. Note that for nested types with lots of sharing the owned variants can be much larger than the serialized representation.

§Examples

use std::error::Error;
use planus::ReadAsRoot;
use planus_example::monster_generated::my_game::sample::{Monster, MonsterRef};

fn main() -> Result<(), Box<dyn Error>> {
    let buf = std::fs::read("monster.bin")?;
    let monster: MonsterRef<'_> = MonsterRef::read_as_root(&buf)?;
    let monster_health = monster.hp()?;
    let owned_monster: Monster = monster.try_into().expect("invalid monster");
    Ok(())
}

Required Methods§

source

fn read_as_root(slice: &'a [u8]) -> Result<Self>

Takes a slice assumed to be of this type and returns a view into it.

If the data is not valid for this type the field accessors will give errors or invalid values, but will still be memory safe.

Object Safety§

This trait is not object safe.

Implementors§

impl<'a> ReadAsRoot<'a> for SparseTensorRef<'a>

impl<'a> ReadAsRoot<'a> for MapRef<'a>

impl<'a> ReadAsRoot<'a> for LargeListRef<'a>

impl<'a> ReadAsRoot<'a> for LargeUtf8Ref<'a>

impl<'a> ReadAsRoot<'a> for IntRef<'a>

impl<'a> ReadAsRoot<'a> for StructRef<'a>

impl<'a> ReadAsRoot<'a> for IntervalRef<'a>

impl<'a> ReadAsRoot<'a> for SparseTensorIndexCooRef<'a>

impl<'a> ReadAsRoot<'a> for FieldRef<'a>

impl<'a> ReadAsRoot<'a> for FixedSizeListRef<'a>

impl<'a> ReadAsRoot<'a> for FooterRef<'a>

impl<'a> ReadAsRoot<'a> for NullRef<'a>

impl<'a> ReadAsRoot<'a> for SchemaRef<'a>

impl<'a> ReadAsRoot<'a> for TensorRef<'a>

impl<'a> ReadAsRoot<'a> for DictionaryBatchRef<'a>

impl<'a> ReadAsRoot<'a> for DateRef<'a>

impl<'a> ReadAsRoot<'a> for MessageRef<'a>

impl<'a> ReadAsRoot<'a> for UnionRef<'a>

impl<'a> ReadAsRoot<'a> for BodyCompressionRef<'a>

impl<'a> ReadAsRoot<'a> for SparseTensorIndexCsfRef<'a>

impl<'a> ReadAsRoot<'a> for DictionaryEncodingRef<'a>

impl<'a> ReadAsRoot<'a> for TimestampRef<'a>

impl<'a> ReadAsRoot<'a> for LargeBinaryRef<'a>

impl<'a> ReadAsRoot<'a> for FloatingPointRef<'a>

impl<'a> ReadAsRoot<'a> for SparseMatrixIndexCsxRef<'a>

impl<'a> ReadAsRoot<'a> for BinaryRef<'a>

impl<'a> ReadAsRoot<'a> for Utf8Ref<'a>

impl<'a> ReadAsRoot<'a> for RecordBatchRef<'a>

impl<'a> ReadAsRoot<'a> for BoolRef<'a>

impl<'a> ReadAsRoot<'a> for TimeRef<'a>

impl<'a> ReadAsRoot<'a> for DecimalRef<'a>

impl<'a> ReadAsRoot<'a> for TensorDimRef<'a>

impl<'a> ReadAsRoot<'a> for ListRef<'a>

impl<'a> ReadAsRoot<'a> for KeyValueRef<'a>

impl<'a> ReadAsRoot<'a> for FixedSizeBinaryRef<'a>

impl<'a> ReadAsRoot<'a> for DurationRef<'a>