什么是crate属性,我在哪里添加它?

Soh*_*ury 57 rust rust-cargo

为了了解Rust的工作原理,我决定查看一个名为Iota的基于终端的文本编辑器.我克隆了存储库并且cargo build只是被告知:

error: *if let* syntax is experimental

help: add #![feature(if_let)] to the crate attributes to enable
Run Code Online (Sandbox Code Playgroud)

我应该在哪里添加#![feature(if_let)]到箱子属性?

She*_*ter 54

crate属性是一个#[...]适用于封闭上下文(#![...])的attribute ().必须将此属性添加到crate根的顶部,因此上下文是crate本身:

#![attribute_name]
#![attribute_name(arg1, ...)]
Run Code Online (Sandbox Code Playgroud)

如果你正在创造

  • 一个库 - 包根将是一个名为的文件lib.rs.
  • 应用程序 - 包根将是.rs您构建的主文件.
  • 集成测试 - crate root是每个文件 main.rs
  • 一个例子 - crate root是每个文件 tests/

Rust编程语言,第一版讲述了一般的属性, Rust Reference谈到了"只有crate属性"."不稳定手册"包含功能标记列表和有关其功能的简要文档.

有许多不同的crate属性,但examples/crate属性(feature)只能用于编译器的夜间版本.不稳定的功能不允许在稳定的Rust版本中使用.