Crate bitsparrow [−] [src]
For implementations in other languages, and more detailed information on the types check out http://bitsparrow.io/.
BitSparrow in Rust
Encoding
use bitsparrow::Encoder; let buffer = Encoder::new() .uint8(100) .string("Foo") .end() .unwrap(); assert_eq!(buffer, vec![0x64,0x03,0x46,0x6f,0x6f])
Each method on the Encoder
will return a mutable borrow of
the encoder. If you need to break the monad chain, store the
owned encoder as a variable before writing to it, e.g.:
use bitsparrow::Encoder; let mut encoder = Encoder::new(); encoder.uint8(100); /* * Many codes here */ let buffer = encoder.string("Foo") .end() .unwrap(); assert_eq!(buffer, vec![0x64,0x03,0x46,0x6f,0x6f]);
To make the monad chain feasible, Encoder will internally
store the last error (if any) that occures during the chain,
and return in on the Result
of the end
method.
Decoding
use bitsparrow::Decoder; let buffer: Vec<u8> = vec![0x64,0x03,0x46,0x6f,0x6f]; let mut decoder = Decoder::new(buffer); assert_eq!(100u8, decoder.uint8().unwrap()); assert_eq!("Foo", decoder.string().unwrap()); assert_eq!(true, decoder.end());
Decoder consumes the buffer and allows you to retrieve the
values in order they were encoded. Calling the end
method
is optional, it will return true if you have read the entire
buffer, which can be handy if you are reading multiple
messages stacked on a single buffer.
Structs
Decoder |
Decoder consumes a buffer represented as |
Encoder |
Encoder takes in typed data and produces a binary buffer
represented as |
Error |
Simple error type returned either by the |