什么是 Rust 中的 crate 属性以及它们应该放在代码的哪里?
大家好!我刚开始学习 Rust,正在尝试理解 crate 属性。官方文档说有一些属性适用于整个 crate,但我不明白这意味着什么以及应该把它们放在哪里。
我有一个通过 `cargo new my_project` 创建的简单项目。里面有一个包含 `main` 函数的 `main.rs` 文件。我读到可以使用 `#![allow(unused_variables)]` 属性来让编译器不警告未使用的变量。但是当我写:
```rust
#![allow(unused_variables)]
fn main() {
let x = 5;
let y = 10;
println!("Hello!");
}
```
编译器警告说该属性不适用于表达式。我尝试使用 `#[allow(unused_variables)]`(只有一个感叹号),然后警告只对一个表达式消失了,而不是整个文件。
`#![...]` 和 `#[...]` 有什么区别?为什么我的属性没有作为 crate 属性生效?以及应该具体添加在哪里?