Module serde_tagged::ser::external

source ·
Expand description

Serialization of externally tagged values.

Tagging values externally will apply the tag via a mapping from tag to value, thus serializing a tagged value with the functionality provided in this module will always result in a map-object with a single entry.

This format is similar to the externally-tagged enum format provided by serde, however allows for various tag types (not only str and u32).

§Examples serializing to JSON

§A primitive

Serializing a value

let foo: i32 = 42;

let mut serializer = serde_json::Serializer::new(std::io::stdout());
serde_tagged::ser::external::serialize(&mut serializer, "bar", &foo).unwrap();

with a tag value of "bar" will produce

{ "bar": 42 }

§A Simple struct

Serializing a value foo with

#[derive(Serialize)]
struct Foo {
    bar: &'static str,
}

let foo = Foo { bar: "baz" };

let mut serializer = serde_json::Serializer::new(std::io::stdout());
serde_tagged::ser::external::serialize(&mut serializer, "my-tag", &foo).unwrap();

with a tag-value of "my-tag" will produce the following JSON output:

{ "my-tag": { "bar": "baz" } }

Structs§

  • A serializer that applies a tag externally to the provided value and serializes them as key-value pair.

Functions§

  • Applies a tag externally to the specified value and serializes them using the provided serializer.