[][src]Trait speedy::Readable

pub trait Readable<'a, C: Context>: Sized {
    fn read_from<R: Reader<'a, C>>(reader: &mut R) -> Result<Self, C::Error>;

    fn minimum_bytes_needed() -> usize { ... }
fn read_from_buffer(buffer: &'a [u8]) -> Result<Self, C::Error>
    where
        Self: DefaultContext<Context = C>,
        C: Default
, { ... }
fn read_with_length_from_buffer(
        buffer: &'a [u8]
    ) -> (Result<Self, C::Error>, usize)
    where
        Self: DefaultContext<Context = C>,
        C: Default
, { ... }
fn read_from_buffer_owned(buffer: &[u8]) -> Result<Self, C::Error>
    where
        Self: DefaultContext<Context = C>,
        C: Default
, { ... }
fn read_from_stream_unbuffered(stream: impl Read) -> Result<Self, C::Error>
    where
        Self: DefaultContext<Context = C>,
        C: Default
, { ... }
fn read_from_stream_buffered(stream: impl Read) -> Result<Self, C::Error>
    where
        Self: DefaultContext<Context = C>,
        C: Default
, { ... }
fn read_from_file(path: impl AsRef<Path>) -> Result<Self, C::Error>
    where
        Self: DefaultContext<Context = C>,
        C: Default
, { ... }
fn read_from_buffer_with_ctx(
        context: C,
        buffer: &'a [u8]
    ) -> Result<Self, C::Error> { ... }
fn read_with_length_from_buffer_with_ctx(
        context: C,
        buffer: &'a [u8]
    ) -> (Result<Self, C::Error>, usize) { ... }
fn read_from_buffer_owned_with_ctx(
        context: C,
        buffer: &[u8]
    ) -> Result<Self, C::Error> { ... }
fn read_from_stream_unbuffered_with_ctx<S: Read>(
        context: C,
        stream: S
    ) -> Result<Self, C::Error> { ... }
fn read_from_stream_buffered_with_ctx<S: Read>(
        context: C,
        stream: S
    ) -> Result<Self, C::Error> { ... }
fn read_from_file_with_ctx(
        context: C,
        path: impl AsRef<Path>
    ) -> Result<Self, C::Error> { ... } }

Required methods

fn read_from<R: Reader<'a, C>>(reader: &mut R) -> Result<Self, C::Error>

Loading content...

Provided methods

fn minimum_bytes_needed() -> usize

fn read_from_buffer(buffer: &'a [u8]) -> Result<Self, C::Error> where
    Self: DefaultContext<Context = C>,
    C: Default

fn read_with_length_from_buffer(
    buffer: &'a [u8]
) -> (Result<Self, C::Error>, usize) where
    Self: DefaultContext<Context = C>,
    C: Default

fn read_from_buffer_owned(buffer: &[u8]) -> Result<Self, C::Error> where
    Self: DefaultContext<Context = C>,
    C: Default

fn read_from_stream_unbuffered(stream: impl Read) -> Result<Self, C::Error> where
    Self: DefaultContext<Context = C>,
    C: Default

Reads from a given stream without any buffering.

This will only read what is necessary from the stream to deserialize a given type, but is going to be slow.

Use read_from_stream_buffered if you need to read from a stream and you don't care about not overreading.

fn read_from_stream_buffered(stream: impl Read) -> Result<Self, C::Error> where
    Self: DefaultContext<Context = C>,
    C: Default

Reads from a given stream with internal buffering.

This will read more data from the stream than is necessary to deserialize a given type, however it should be orders of magnitude faster than unbuffered streaming, especially when reading relatively complex objects.

Use the slower read_from_stream_unbuffered if you want to avoid overreading.

fn read_from_file(path: impl AsRef<Path>) -> Result<Self, C::Error> where
    Self: DefaultContext<Context = C>,
    C: Default

fn read_from_buffer_with_ctx(
    context: C,
    buffer: &'a [u8]
) -> Result<Self, C::Error>

fn read_with_length_from_buffer_with_ctx(
    context: C,
    buffer: &'a [u8]
) -> (Result<Self, C::Error>, usize)

fn read_from_buffer_owned_with_ctx(
    context: C,
    buffer: &[u8]
) -> Result<Self, C::Error>

fn read_from_stream_unbuffered_with_ctx<S: Read>(
    context: C,
    stream: S
) -> Result<Self, C::Error>

fn read_from_stream_buffered_with_ctx<S: Read>(
    context: C,
    stream: S
) -> Result<Self, C::Error>

fn read_from_file_with_ctx(
    context: C,
    path: impl AsRef<Path>
) -> Result<Self, C::Error>

Loading content...

Implementations on Foreign Types

impl<'a, C, K, V> Readable<'a, C> for BTreeMap<K, V> where
    C: Context,
    K: Readable<'a, C> + Ord,
    V: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for BTreeSet<T> where
    C: Context,
    T: Readable<'a, C> + Ord
[src]

impl<'a, C, K, V, S> Readable<'a, C> for HashMap<K, V, S> where
    C: Context,
    K: Readable<'a, C> + Eq + Hash,
    V: Readable<'a, C>,
    S: BuildHasher + Default
[src]

impl<'a, C, T, S> Readable<'a, C> for HashSet<T, S> where
    C: Context,
    T: Readable<'a, C> + Eq + Hash,
    S: BuildHasher + Default
[src]

impl<'a, C: Context> Readable<'a, C> for bool[src]

impl<'a, C: Context> Readable<'a, C> for char[src]

impl<'a, C: Context> Readable<'a, C> for i8[src]

impl<'a, C: Context> Readable<'a, C> for i16[src]

impl<'a, C: Context> Readable<'a, C> for i32[src]

impl<'a, C: Context> Readable<'a, C> for i64[src]

impl<'a, C: Context> Readable<'a, C> for u8[src]

impl<'a, C: Context> Readable<'a, C> for u16[src]

impl<'a, C: Context> Readable<'a, C> for u32[src]

impl<'a, C: Context> Readable<'a, C> for u64[src]

impl<'a, C: Context> Readable<'a, C> for f32[src]

impl<'a, C: Context> Readable<'a, C> for f64[src]

impl<'a, C: Context> Readable<'a, C> for usize[src]

impl<'a, C: Context> Readable<'a, C> for String[src]

impl<'a, C: Context> Readable<'a, C> for Cow<'a, str>[src]

impl<'a, C: Context, T: Readable<'a, C>> Readable<'a, C> for Vec<T>[src]

impl<'a, C: Context, T: Readable<'a, C>> Readable<'a, C> for Cow<'a, [T]> where
    [T]: ToOwned<Owned = Vec<T>>, 
[src]

impl<'a, C: Context, T: Readable<'a, C>> Readable<'a, C> for Range<T>[src]

impl<'a, C: Context, T: Readable<'a, C>> Readable<'a, C> for Option<T>[src]

impl<'a, C: Context> Readable<'a, C> for ()[src]

impl<'a, C: Context, A0: Readable<'a, C>> Readable<'a, C> for (A0,)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>> Readable<'a, C> for (A0, A1)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>, A5: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4, A5)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>, A5: Readable<'a, C>, A6: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4, A5, A6)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>, A5: Readable<'a, C>, A6: Readable<'a, C>, A7: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4, A5, A6, A7)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>, A5: Readable<'a, C>, A6: Readable<'a, C>, A7: Readable<'a, C>, A8: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4, A5, A6, A7, A8)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>, A5: Readable<'a, C>, A6: Readable<'a, C>, A7: Readable<'a, C>, A8: Readable<'a, C>, A9: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)[src]

impl<'a, C: Context, A0: Readable<'a, C>, A1: Readable<'a, C>, A2: Readable<'a, C>, A3: Readable<'a, C>, A4: Readable<'a, C>, A5: Readable<'a, C>, A6: Readable<'a, C>, A7: Readable<'a, C>, A8: Readable<'a, C>, A9: Readable<'a, C>, A10: Readable<'a, C>> Readable<'a, C> for (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)[src]

impl<'a, C: Context> Readable<'a, C> for NonZeroU32[src]

impl<'a, C: Context> Readable<'a, C> for AtomicI8[src]

impl<'a, C: Context> Readable<'a, C> for AtomicI16[src]

impl<'a, C: Context> Readable<'a, C> for AtomicI32[src]

impl<'a, C: Context> Readable<'a, C> for AtomicI64[src]

impl<'a, C: Context> Readable<'a, C> for AtomicU8[src]

impl<'a, C: Context> Readable<'a, C> for AtomicU16[src]

impl<'a, C: Context> Readable<'a, C> for AtomicU32[src]

impl<'a, C: Context> Readable<'a, C> for AtomicU64[src]

impl<'a, C> Readable<'a, C> for Ipv4Addr where
    C: Context
[src]

impl<'a, C> Readable<'a, C> for Ipv6Addr where
    C: Context
[src]

impl<'a, C> Readable<'a, C> for IpAddr where
    C: Context
[src]

impl<'a, C> Readable<'a, C> for Duration where
    C: Context
[src]

impl<'a, C> Readable<'a, C> for SystemTime where
    C: Context
[src]

impl<'a, C, T> Readable<'a, C> for [T; 1] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 2] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 3] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 4] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 5] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 6] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 7] where
    C: Context,
    T: Readable<'a, C>, 
[src]

impl<'a, C, T> Readable<'a, C> for [T; 8] where
    C: Context,
    T: Readable<'a, C>, 
[src]

Loading content...

Implementors

impl<'a, C: Context> Readable<'a, C> for Endianness[src]

Loading content...