[−][src]Struct serde_pipe::Deserializer
Deserializer pipe: push u8
; pull T
.
You will not be able to push any u8
until Deserializer::pull::<T>()
has been called to specify the type to be deserialized to.
The push
and pull
calls can signify "blocking" – i.e. they're awaiting the other call – by returning None
.
A Some
returned signifies readiness, holding an impl FnOnce
that you can call to perform the push/pull.
Example
use serde_pipe::{Serializer,Deserializer}; let large_vector = (0..1u64<<10).collect::<Vec<_>>(); let mut serializer = Serializer::new(); serializer.push().unwrap()(large_vector); let mut deserializer = Deserializer::new(); deserializer.pull::<Vec<u64>>(); while let Some(pull) = serializer.pull() { let byte = pull(); deserializer.push().unwrap()(byte); } let large_vector = deserializer.pull::<Vec<u64>>().unwrap()();
Panics
Will panic if dropped while non-empty. In practise this almost always signifies a bug. If you do want to drop it when non-empty, call Deserializer::empty()
before dropping it.
Methods
impl Deserializer
[src]
pub fn new() -> Self
[src]
Construct a new Deserializer pipe.
pub fn pull<'a, T: DeserializeOwned + 'static>(
&'a mut self
) -> Option<impl FnOnce() -> T + 'a>
[src]
&'a mut self
) -> Option<impl FnOnce() -> T + 'a>
Pull a T
from the Deserializer pipe. None
denotes that the Deserializer is instead awaiting a push
. Some
contains an impl FnOnce() -> T
that can be called to perform the pull
.
Note that push
will return None
until pull
has been called, as it's necessary to supply the type of the value being seserialized.
pub fn push<'a>(&'a mut self) -> Option<impl FnOnce(u8) + 'a>
[src]
Push a u8
to the Deserializer pipe. None
denotes that the Deserializer is instead awaiting a pull
. Some
contains an impl FnOnce(u8)
that can be called to perform the push
.
Note that push
will return None
until pull
has been called, as it's necessary to supply the type of the value being seserialized.
pub fn empty<'a>(&'a mut self) -> Option<impl FnOnce() + 'a>
[src]
Trait Implementations
impl Drop for Deserializer
[src]
impl Debug for Deserializer
[src]
Auto Trait Implementations
impl Sync for Deserializer
impl Send for Deserializer
impl Unpin for Deserializer
impl RefUnwindSafe for Deserializer
impl UnwindSafe for Deserializer
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,