rust - 什么是 crate 属性,我应该在哪里添加它?

标签 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 属性?

最佳答案

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

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

如果你正在创作

  • 一个库——crate root 将是一个名为 lib.rs
  • 的文件
  • 一个应用程序 — crate root 将是您构建的主要 .rs 文件。在许多情况下,这将被称为 main.rs
  • 一个集成测试 - crate root 是 tests/
  • 中的每个文件
  • 一个例子——crate root 是 examples/
  • 中的每个文件

The Rust Programming LanguageRust Reference大致谈谈属性。 The Unstable Book包含功能标志列表和有关它们功能的简要文档。

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

关于rust - 什么是 crate 属性,我应该在哪里添加它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454761/

相关文章:

rust - 我可以从函数中自动返回 Ok(()) 或 None 吗?

rust - rust-chrono 中的 ParseError(NotEnough) 是什么意思?

rust - 如何避免并行运行一些测试?

rust - 如何访问通过 `cargo install` 安装的 Rust/Cargo 项目中包含的 Assets ?

rust - 将向量拆分为 block 时处理余数的优雅方法是什么?

iterator - 实现 Iterator 时的生命周期问题

docker - 编译 azure iot edge 的 edgelet 模块时出现 cargo 错误

rust - Rust 的 Cargo 包可以在我的机器上编译代码吗?

windows - 运行 Cargo 时找不到 EtwGetTraceLoggerHandle

rust - 返回向量的第一项