In order to get a feel for how Rust works, I decided to look at a little terminal-based text editor called Iota. I cloned the repository and ran cargo build
only to be told:
error: *if let* syntax is experimental help: add #![feature(if_let)] to the crate attributes to enable
Where am I supposed to add #![feature(if_let)]
to the crate attributes?
A crate attribute is an attribute (#[...]
) that applies to the enclosing context (#![...]
). This attribute must be added to the top of your crate root, thus the context is the crate itself:
#![attribute_name]
#![attribute_name(arg1, ...)]
If you are creating
lib.rs
.rs
file you build. In many cases, this will be called main.rs
tests/
examples/
The Rust Programming Language and the Rust Reference talk a bit about attributes in general. The Unstable Book contains a list of feature flags and brief documentation on what they do.
There are many different crate attributes, but the feature
crate attribute (#![feature(feature1, feature2)]
) may only be used in a nightly version of the compiler. Unstable features are not allowed to be used in stable Rust versions.