5 unstable releases
0.3.0 | Jul 2, 2021 |
---|---|
0.2.2 | Oct 15, 2020 |
0.2.1 | Oct 10, 2020 |
0.2.0 | Oct 8, 2020 |
0.1.0 | Oct 8, 2020 |
#1816 in Encoding
10KB
84 lines
Overview
Wrapper for types implementing Serialize
/Deserialize
to implement
Encode
/Decode
automatically.
Example
extern crate alloc;
use alloc::string::String;
use parity_scale_codec::{Decode, Encode};
use serde::{Deserialize, Serialize};
use serde_scale_wrap::Wrap;
#[derive(Debug, Deserialize, PartialEq, Serialize)]
struct Foo {
x: i32,
s: String,
}
let original = Foo { x: 3, s: "foo".into() };
let serialized = Wrap(&original).encode();
let Wrap(deserialized) = Wrap::<Foo>::decode(&mut &*serialized).unwrap();
assert_eq!(original, deserialized);
Conformance
⚠ Option<bool>
is serialized as a single byte according to the SCALE encoding, which differs
from the result of Encode::encode
-- Encode
expects OptionBool
to be used instead.
Features
no_std
is supported by disabling default features.
std
: Support forstd
. It is enabled by default.
🔖 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
.
Contribute
All contributions shall be licensed under the zlib license.
Related projects
- parity-scale-codec: Reference Rust implementation
- serde-scale: SCALE encoding with
serde
Dependencies
~2MB
~53K SLoC