What is a crate attribute and where do I add it?
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
- a library — the crate root will be a file called
lib.rs
- an application — the crate root would be the primary
.rs
file you build. In many cases, this will be calledmain.rs
- an integration test - the crate root is each file in
tests/
- an example - the crate root is each file in
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.