pub struct Deserializer { /* private fields */ }
Expand description
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.
Implementations§
Source§impl Deserializer
impl Deserializer
Sourcepub fn pull<'a, T: DeserializeOwned + 'static>(
&'a mut self,
) -> Option<impl FnOnce() -> T + 'a>
pub fn pull<'a, T: DeserializeOwned + 'static>( &'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.
Sourcepub fn push<'a>(&'a mut self) -> Option<impl FnOnce(u8) + 'a>
pub fn push<'a>(&'a mut self) -> Option<impl FnOnce(u8) + 'a>
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.