Skip to main content

Crate facet_default

Crate facet_default 

Source
Expand description

§facet-default

Derive Default for your types using facet’s plugin system with custom field defaults.

§Usage

use facet::Facet;
use facet_default as _;

#[derive(Facet, Debug)]
#[facet(derive(Default))]
pub struct Config {
    #[facet(default = "localhost")]
    host: String,
    #[facet(default = 8080u16)]
    port: u16,
    // No attribute = uses Default::default()
    debug: bool,
}

§Attributes

§Field Level

  • #[facet(default = literal)] - Use a literal value
  • #[facet(default)] - Use Default::default() for the field type

Fields without attributes use Default::default().

§Enums

For enums, mark the default variant:

#[derive(Facet, Debug)]
#[facet(derive(Default))]
#[repr(u8)]
pub enum Status {
    #[facet(default::variant)]
    Pending,
    Active,
    Done,
}

Macros§

__facet_invoke
Plugin chain entry point.

Enums§

Attr
Default attribute types for configuring Default implementation.