Skip to main content

Follow

Trait Follow 

Source
pub trait Follow<'a> {
    type Inner;

    // Required method
    fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>;
}
Expand description

Follow is a trait that allows us to access FlatBuffers in a declarative, type safe, and fast way. They compile down to almost no code (after optimizations). Conceptually, Follow lifts the offset-based access patterns of FlatBuffers data into the type system. This trait is used pervasively at read time, to access tables, vtables, vectors, strings, and all other data. At this time, Follow is not utilized much on the write path.

Writing a new Follow implementation primarily involves deciding whether you want to return data (of the type Self::Inner) or do you want to continue traversing the FlatBuffer.

Required Associated Types§

Required Methods§

Source

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<'a, T: EndianScalar> Follow<'a> for &'a [T]

Available on little-endian only.

Implement direct slice access if the host is little-endian.

Source§

type Inner = &'a [T]

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for &'a str

Source§

type Inner = &'a str

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for bool

Source§

type Inner = bool

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for f32

Source§

type Inner = f32

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for f64

Source§

type Inner = f64

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for i8

Source§

type Inner = i8

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for i16

Source§

type Inner = i16

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for i32

Source§

type Inner = i32

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for i64

Source§

type Inner = i64

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for u8

Source§

type Inner = u8

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for u16

Source§

type Inner = u16

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for u32

Source§

type Inner = u32

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Source§

impl<'a> Follow<'a> for u64

Source§

type Inner = u64

Source§

fn follow(buf: &'a [u8], loc: usize) -> Result<Self::Inner, Error>

Implementors§

Source§

impl<'a, T: Follow<'a> + 'a> Follow<'a> for SkipFileIdentifier<T>

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a, T: Follow<'a> + 'a> Follow<'a> for SkipRootOffset<T>

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a, T: Follow<'a> + 'a> Follow<'a> for SkipSizePrefix<T>

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a, T: Follow<'a> + 'a> Follow<'a> for Vector<'a, T>

Implement Follow for all possible Vectors that have Follow-able elements.

Source§

type Inner = Vector<'a, T>

Source§

impl<'a, T: Follow<'a>> Follow<'a> for BackwardsSOffset<T>

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a, T: Follow<'a>> Follow<'a> for FollowStart<T>

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a, T: Follow<'a>> Follow<'a> for ForwardsVOffset<T>

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a, T> Follow<'a> for ForwardsUOffset<T>
where T: Follow<'a>,

Source§

type Inner = <T as Follow<'a>>::Inner

Source§

impl<'a> Follow<'a> for FileIdentifier

Source§

type Inner = &'a [u8]