Crate bincode[][src]

Expand description

Bincode is a crate for encoding and decoding using a tiny binary serialization strategy. Using it, you can easily go from having an object in memory, quickly serialize it to bytes, and then deserialize it back just as fast!

Serde

Starting from bincode 2, serde is now an optional dependency. If you want to use serde, please enable the serde feature. See Features for more information.

Features

NameDefault?Supported types for Encode/DecodeEnabled methodsOther
stdYesdecode_from_reader and encode_into_writer
allocYesAll common containers in alloc, like Vec, String, Boxencode_to_vec
atomicYesAll Atomic* integer types, e.g. AtomicUsize, and AtomicBool
deriveYesEnables the BorrowDecode, Decode and Encode derive macros
serdeNoCompat and BorrowCompat, which will work for all types that implement serde’s traitsserde-specific encode/decode functions in the serde moduleNote: There are several known issues when using serde and bincode

Example

use bincode::config::Configuration;

let mut slice = [0u8; 100];

    // You can encode any type that implements `enc::Encode`.
    // You can automatically implement this trait on custom types with the `derive` feature.
let input = (
    0u8,
    10u32,
    10000i128,
    'a',
    [0u8, 1u8, 2u8, 3u8]
);

let length = bincode::encode_into_slice(
    input,
    &mut slice,
    Configuration::standard()
).unwrap();

let slice = &slice[..length];
println!("Bytes written: {:?}", slice);

// Decoding works the same as encoding.
// The trait used is `de::Decode`, and can also be automatically implemented with the `derive` feature.
let decoded: (u8, u32, i128, char, [u8; 4]) = bincode::decode_from_slice(slice, Configuration::standard()).unwrap();

assert_eq!(decoded, input);

Re-exports

pub use de::BorrowDecode;
pub use de::Decode;
pub use enc::Encode;

Modules

The config module is used to change the behavior of bincode’s encoding and decoding logic.

Decoder-based structs and traits.

Encoder-based structs and traits.

Errors that can be encounting by Encoding and Decoding.

serdeserde

Support for serde integration. Enable this with the serde feature.

Serialization specification

Functions

Attempt to decode a given type D from the given Reader.

Attempt to decode a given type D from the given slice.

Decode type D from the given reader with the given Config. The reader can be any type that implements std::io::Read, e.g. std::fs::File.

Encode the given value into the given slice. Returns the amount of bytes that have been written.

Encode the given value into any type that implements std::io::Write, e.g. std::fs::File, with the given Config. See the config module for more information.

Encode the given value into a custom Writer.

Encode the given value into a Vec<u8> with the given Config. See the config module for more information.

Derive Macros

Decodederive
Encodederive