sval_derive/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/*!
`#![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 the `flatten` 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.
*/
#[doc(inline)]
pub use sval_derive_macros::*;
pub mod extensions {
#[cfg(feature = "flatten")]
pub use sval_flatten as flatten;
}