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

时间:2014-12-13 01:59:40

标签: rust rust-cargo

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

  
error: *if let* syntax is experimental

help: add #![feature(if_let)] to the crate attributes to enable

我应该将#![feature(if_let)]添加到crate属性中?

1 个答案:

答案 0 :(得分:41)

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

#![attribute_name]
#![attribute_name(arg1, ...)]

如果您正在创建

  • 一个库 - crate root将是一个名为lib.rs的文件。
  • 一个应用程序 - crate root将是你构建的主.rs文件。
  • 集成测试 - crate root是tests/
  • 中的每个文件
  • 示例 - crate root是examples/
  • 中的每个文件

The Rust Programming Language, first edition谈论了一般的属性,Rust Reference谈到了“只有箱子的属性”。 The Unstable Book包含功能标记列表和有关其功能的简要文档。

有许多不同的crate属性,但feature crate属性(#![feature(feature1, feature2)])只能在编译器的 nightly 版本中使用。不稳定的功能不允许在稳定的Rust版本中使用。