Derive Macro ibuilder::IBuilder[][src]

#[derive(IBuilder)]
{
    // Attributes available to this derive:
    #[ibuilder]
}
Expand description

Derive macro for IBuilder.

Supported features

This is a somewhat complete list of all the attributes it’s possible to use deriving from IBuilder.

#[ibuilder(rename = "new name")]

When applied to a struct, a named field (of a struct or of a variant) or an enum’s variant it changes the named displayed in the list of possible options returned by get_options() and in the tree structure returned by to_node.

Renaming an enum is not is supported since that name is not shown anywhere.

#[derive(IBuilder)]
#[ibuilder(rename = "new struct name")]
struct Struct {
    #[ibuilder(rename = "new field name")]
    field1: i64,
}
#[derive(IBuilder)]
enum Enum {
    #[ibuilder(rename = "new variant name")]
    Var1,
    Var2 {
        #[ibuilder(rename = "new field name")]
        field: i32,
    },
}

#[ibuilder(prompt = "new prompt message")]

Change the message attached to the result of get_options() for a struct, an enum, a field or a variant. The prompt set on fields and variants overwrites the one on the structs and enum. If not specified a default value is used.

#[derive(IBuilder)]
#[ibuilder(prompt = "new struct prompt")]
struct Struct {
    #[ibuilder(rename = "new field prompt")]
    field1: i64,
}
#[derive(IBuilder)]
#[ibuilder(prompt = "new enum prompt")]
enum Enum {
    #[ibuilder(rename = "new variant promp")]
    Var1,
    Var2 {
        #[ibuilder(rename = "new field prompt")]
        field: i32,
    },
}

#[ibuilder(default = something)]

Set a default value for the field. After the equal sign a literal is expected, if it is a string literal the conversion is done using FromStr at runtime, otherwise the literal is converted using the as syntax.

For now only the builtin types can be defaulted (numeric types, bool, char and String).

#[derive(IBuilder)]
struct Struct {
    #[ibuilder(default = 42)]
    field1: u8,
    #[ibuilder(default = "something")]
    field2: String,
    #[ibuilder(default = true)]
    field3: bool,
    #[ibuilder(default = 'x')]
    field4: char,
}
#[derive(IBuilder)]
enum Enum {
    Var {
        #[ibuilder(default = 42)]
        field: i32,
    },
}

#[ibuilder(default)]

Set a variant of an enum as the default one for that enum. At most one variant can be set as default.

#[derive(IBuilder)]
enum Enum {
    #[ibuilder(default)]
    Var1,
    Var2,
}

#[ibuilder(hidden)]

Hide a field or a variant from the return value of get_options() and to_node(). The field cannot be accessed neither using apply. If a field is hidden it must have a default value or it must implement Default.

When hiding the fields of an enum, at least one of them must be visible.

#[derive(IBuilder)]
struct Struct {
    #[ibuilder(hidden, default = 42)]
    field1: u8,
    #[ibuilder(hidden)] // uses Default::default()
    field2: u8,
}
#[derive(IBuilder)]
enum Enum {
    Var1,
    #[ibuilder(hidden)]
    Var2,
}