Что такое атрибут ящика и куда его добавить?
Чтобы понять, как работает Rust, я решил взглянуть на небольшой текстовый редактор на основе терминала, который называется Iota. Я клонировал хранилище и побежал cargo build
только чтобы сказать:
error: *if let* syntax is experimental help: add #![feature(if_let)] to the crate attributes to enable
Где я должен добавить #![feature(if_let)]
к атрибутам ящика?
1 ответ
Атрибут ящика является атрибутом (#[...]
), что относится к окружающему контексту (#![...]
). Этот атрибут должен быть добавлен в верхнюю часть корня ящика, поэтому контекстом является сам ящик:
#![attribute_name]
#![attribute_name(arg1, ...)]
Если вы создаете
- библиотека - корнем ящика будет файл с именем
lib.rs
, - приложение - корень ящика будет основным
.rs
файл, который вы строите. - интеграционный тест - корнем ящика является каждый файл в
tests/
- пример - корень ящика - это каждый файл в
examples/
Rust Programming Language, первое издание, немного говорит об атрибутах в целом, а Rust Reference говорит о "атрибутах только для ящиков". Нестабильная книга содержит список флагов функций и краткую документацию о том, что они делают.
Есть много разных атрибутов ящиков, но feature
атрибут ящика (#![feature(feature1, feature2)]
) может использоваться только в ночной версии компилятора. Нестабильные функции нельзя использовать в стабильных версиях Rust.