[−][src]Crate nimble_derive
Nimble
Async friendly, simple and fast binary encoding/decoding in Rust.
Binary encoding scheme
This crate uses a minimal binary encoding scheme. For example, consider the following struct
:
struct MyStruct { a: u8, b: u16, }
encode()
will serialize this into Vec
of size 3
(which is the sum of sizes of u8
and u16
).
Similarly, for types which can have dynamic size (Vec
, String
, etc.), encode()
prepends the size of encoded value
as u64
.
Usage
Add nimble
in your Cargo.toml
's dependencies
section:
[dependencies]
nimble = { version = "0.2", features = ["derive"] }
Or, if you are in an environment based on tokio
, use:
[dependencies]
nimble = { version = "0.2", features = ["derive", "tokio"] }
For encoding and decoding, any type must implement two traits provided by this crate, i.e., Encode
and Decode
. For
convenience, nimble
provides derive
macros (only when "derive"
feature is enabled) to implement these traits.
use nimble::{Encode, Decode}; #[derive(Encode, Decode)] struct MyStruct { a: u8, b: u16, }
Now you can use encode()
and decode()
functions to encode and decode values of MyStruct
. In addition to this, you
can also use MyStruct::encode_to()
function to encode values directly to a type implementing AsyncWrite
and
MyStruct::decode_from()
function to decode values directly from a type implementing AsyncRead
.
Note: Most of the functions exposed by this crate are
async
functions and returnsFuture
values. So, you'll need an executor to drive theFuture
returned from these functions.async-std
andtokio
are two popular options.
Features
tokio
: Select this feature when you are usingtokio
's executor to driveFuture
values returned by functions in this crate. This implementsEncode
andDecode
usingtokio
'sAsyncRead
/AsyncWrite
traits.- Disabled by default.
derive
: Enables derive macros for implementingEncode
andDecode
traits.- Disabled by default.
Derive Macros
Decode | Derive macro to implement |
Encode | Derive macro to implement |