59 releases (28 stable)
2.13.2 | Oct 15, 2024 |
---|---|
2.13.0 | Mar 28, 2024 |
2.10.2 | Oct 19, 2023 |
2.6.1 | Jun 27, 2023 |
0.0.4 | Dec 6, 2018 |
#2563 in Encoding
2,304 downloads per month
Used in 5 crates
(4 directly)
40KB
936 lines
sval_derive
Automatically derive sval::Value
.
lib.rs
:
#![derive(Value)]
.
This library hosts a custom-derive to simplify implementing sval::Value
.
Structs
Container attributes:
#[sval(tag = "path::to::TAG")]
: Set a tag on the struct. No tag is used by default.#[sval(label = "text")]
: Set a label on the struct. The identifier of the struct is used by default.#[sval(index = 1)]
: Set an index on the struct. No index is used by default.#[sval(unlabeled_fields)]
: Specify that all fields should be unlabeled. This will stream the struct as a tuple. If#[sval(unindexed_fields)]
is also specified then it will stream the struct as a sequence.#[sval(unindexed_fields]
: Specify that all fields should be unindexed. This will stream the struct as a record. If#[sval(unlabeled_fields)]
is also specified then it will stream the struct as a sequence.
Field attributes:
#[sval(tag = "path::to::TAG")]
: Set a tag on the struct field itself. No tag is used by default. If you want to use a tag to signal that the field's value has a particular property then use#[sval(data_tag)]
.#[sval(data_tag = "path::to::TAG")]
: Set a tag on the struct field's value. No tag is used by default.#[sval(label = "text")]
: Set a label on the struct field. The identifier of the field is used by default.#[sval(index = 1)]
: Set an index on the struct field. The zero-based offset of the field is used by default.#[sval(skip)]
: Skip a field.#[sval(flatten)]
: Flatten the field onto the struct. This attribute requires theflatten
Cargo feature.
Newtypes
Container attributes:
#[sval(tag = "path::to::TAG")]
: Set a tag on the newtype. No tag is used by default.#[sval(label = "text")]
: Set a label on the newtype. The identifier of the newtype is used by default.#[sval(index = 1)]
: Set an index on the newtype. No index is used by default.#[sval(transparent)]
: Stream the newtype as its underlying field without wrapping it.
Enums
Container attributes:
#[sval(tag = "path::to::TAG")]
: Set a tag on the enum. No tag is used by default.#[sval(label = "text")]
: Set a label on the enum. The identifier of the enum is used by default.#[sval(index = 1)]
: Set an index on the enum. No index is used by default.#[sval(dynamic)]
: Stream the variant without wrapping it in an enum.
Variant attributes:
#[sval(tag = "path::to::TAG")]
: Set a tag on the enum variant itself. No tag is used by default.#[sval(label = "text")]
: Set a label on the enum variant. The identifier of the variant is used by default.#[sval(index = 1)]
: Set an index on the enum variant. The zero-based offset of the variant is used by default.
Dependencies
~220–710KB
~17K SLoC