Что такое атрибут ящика и куда его добавить?

Чтобы понять, как работает 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.

Другие вопросы по тегам