#[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,
}