[][src]Crate serde_scale

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.

Related projects

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