Crate serde_scale

Source
Expand description

§Overview

Serializer and deserializer for the SCALE encoding based on serde.

§Example

use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, PartialEq, Serialize)]
struct Point {
    x: i8,
    y: i8,
}

let point = Point { x: 3, y: 4 };
let deserialized = serde_scale::from_slice(&serde_scale::to_vec(&point).unwrap()).unwrap();
assert_eq!(point, deserialized);

§Conformance

Option<bool> is serialized as a single byte according to the SCALE encoding.

§Features

no_std is supported by disabling default features.

  • std: Support for std. It is enabled by default.
  • alloc: Support for the alloc crate.

🔖 Features enabled in build dependencies and proc-macros are also enabled for normal dependencies, which may cause serde to have its std feature on when it is not desired. Nightly cargo prevents this from happening with -Z features=host_dep or the following in .cargo/config:

[unstable]
features = ["host_dep"]

For example, this issue arises when depending on parity-scale-codec-derive.

§Test

Most tests live in the serde-scale-tests crate (part of the workspace) in order to avoid dependencies enabling serde features.

cargo test --workspace

§Contribute

All contributions shall be licensed under the zlib license.

parity-scale-codec: Reference Rust implementation

Structs§

Deserializer
Deserializer for the SCALE encoding
EndOfInput
Error indicating that the end of the input was reached and not enough bytes were read
OtherError
Serializer
Serializer for the SCALE encoding

Enums§

Bytes
Bytes borrowed from the deserializer or valid only for the duration of the call to read_map
Error
Serialization errors

Traits§

Read
Interface to read bytes
Write
Interface to write bytes

Functions§

from_slice
Deserializes a value encoded with SCALE
to_vec
Serializes a value using the SCALE encoding