Атрибуты — это метаданные, применяемые к какому-либо модулю, контейнеру или их элементу. Благодаря атрибутам можно:
• задать условия компиляции кода
• задать имя, версию и тип (библиотека или исполняемый файл) контейнера
• отключить проверки (lints)
• включить возможности компилятора (макросы, глобальный импорт и другое)
• линковаться с внешней библиотекой
• пометить функции как модульные тесты
• пометить функции, которые будут частью теста производительности
Когда атрибуты применяются ко всему контейнеру, их синтаксис будет #![crate_attribute], а когда они применяются к модулю или элементу модуля, их синтаксис станет #[item_attribute] (обратите внимание на отсутствие !).
Атрибуты могут принимать аргументы с различным синтаксисом:
• #[attribute = "value"]
• #[attribute(key = "value")]
• #[attribute(value)]
Атрибуты могут иметь несколько значений и быть разделены несколькими строками:
#[attribute(value, value2)]
#[attribute(value, value2, value3,
value4, value5)]