Attributes: metadata applied to some module, crate or item

An attribute is metadata applied to some module, crate or item.

This metadata can be used to/for:

When attributes apply to a whole crate, their syntax is #![crate_attribute],

when they apply to a module or item, the syntax is #[item_attribute] (notice the missing bang !).

Attributes can take arguments with different syntaxes:

  • #[attribute = "value"]
  • #[attribute(key = "value")]
  • #[attribute(value)]

Attributes can have multiple values and can be separated over multiple lines, too:

#[attribute(value, value2)]


#[attribute(value,
            value2, value3,
            value4, value5)]