如何有条件地启用基于 cfg 的 Rust 功能?

How can I conditionally enable a Rust feature based on cfg?

我想使用 #![feature(custom_test_frameworks)],但如果可能,只能通过 #[cfg(not(target_os = "custom_os_name"))] 有条件地启用它。我仍然希望可以选择 运行 使用 rusts libtest 直接在我的主机系统上进行一些测试,但显然我不允许通过 cfg:

修改功能

错误信息:

note: inner attributes, like `#![no_std]`, annotate the item enclosing them, 
and are usually found at the beginning of source files. Outer attributes, like 
`#[test]`, annotate the item following them.

是否有任何其他方法可以有条件地启用 "inner attribute"?

您可以使用 #[cfg_attr] 应用基于某些其他功能的属性。

对于你的情况,你可以这样做:

#![cfg_attr(
    not(target_os = "custom_os_name"),
    feature(custom_test_frameworks)
)]