#sval

no-std sval_derive

Derive support for sval

59 releases (28 stable)

new 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

#2316 in Encoding

Download history 251/week @ 2024-07-02 199/week @ 2024-07-09 274/week @ 2024-07-16 316/week @ 2024-07-23 546/week @ 2024-07-30 354/week @ 2024-08-06 255/week @ 2024-08-13 305/week @ 2024-08-20 441/week @ 2024-08-27 797/week @ 2024-09-03 773/week @ 2024-09-10 451/week @ 2024-09-17 360/week @ 2024-09-24 488/week @ 2024-10-01 515/week @ 2024-10-08 1319/week @ 2024-10-15

2,744 downloads per month
Used in 4 crates (3 directly)

Apache-2.0 OR MIT

40KB
936 lines

sval_derive

Rust Latest version Documentation Latest

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 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.

Dependencies

~265–760KB
~18K SLoC