pub struct Serializer { /* fields omitted */ }
Serializer pipe: push T
; pull u8
.
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.
extern crate serde_pipe;
use serde_pipe::Serializer;
let large_vector = (0..1u64<<30).collect::<Vec<_>>();
let mut serializer = Serializer::new();
serializer.push().unwrap()(large_vector);
while let Some(pull) = serializer.pull() {
let byte = pull();
println!("byte! {}", byte);
}
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 Serializer::empty()
before dropping it.
Construct a new Serializer pipe.
Push a T
to the Serializer pipe. None
denotes that the Serializer is instead awaiting a pull
. Some
contains an impl FnOnce(T)
that can be called to perform the push
.
Pull a T
from the Serializer pipe. None
denotes that the Serializer is instead awaiting a push
. Some
contains an impl FnOnce() -> u8
that can be called to perform the pull
.
Empty this pipe. None
denotes it's already empty. Some
contains an impl FnOnce()
that can be called to perform the empty.
Executes the destructor for this type. Read more
Formats the value using the given formatter. Read more