如何使用具有doctest的Rust项目实现条件编译?

如何使用具有doctest的Rust项目实现条件编译?,rust,rustdoc,Rust,Rustdoc,我使用了条件编译来更改函数的类型签名,现在不能为两种“功能”模式运行相同的doctest,因此我需要一种方法来选择退出doctest 我曾尝试将正常测试中使用的#[cfg_attr(feature=“rss_loose”,ignore)]与///rust,ignore合并,使之成为///rust,cfg_attr(feature=“rss_loose”,ignore),但这似乎不起作用。只需编写两组不同的文档和测试,就可以正常工作了: /// ``` /// assert_eq!(42, dt:

我使用了条件编译来更改函数的类型签名,现在不能为两种“功能”模式运行相同的doctest,因此我需要一种方法来选择退出doctest


我曾尝试将正常测试中使用的
#[cfg_attr(feature=“rss_loose”,ignore)]
///rust,ignore
合并,使之成为
///rust,cfg_attr(feature=“rss_loose”,ignore)
,但这似乎不起作用。

只需编写两组不同的文档和测试,就可以正常工作了:

/// ```
/// assert_eq!(42, dt::foo());
/// ```
#[cfg(not(feature = "alternate"))]
pub fn foo() -> u8 { 42 }

/// ```
/// assert_eq!(true, dt::foo());
/// ```
#[cfg(feature = "alternate")]
pub fn foo() -> bool { true }
$cargo测试
编译dt v0.1.0(file:///private/tmp/dt)
运行目标/调试/dt-c3e297f8592542b5
正在运行0个测试
测试结果:可以。0通过;0失败;忽略0;0测量
文档测试dt
运行1测试
测试foo_0。。。好啊
测试结果:可以。1人通过;0失败;忽略0;0测量
$cargo test--features=alternate
编译dt v0.1.0(file:///private/tmp/dt)
运行目标/调试/dt-c3e297f8592542b5
正在运行0个测试
测试结果:可以。0通过;0失败;忽略0;0测量
文档测试dt
运行1测试
测试foo_0。。。好啊
测试结果:可以。1人通过;0失败;忽略0;0测量

在doctest中,
#[cfg_attr]
是否起作用?你可以用隐藏它。唯一的问题是我试图为一个模块文档这么做,所以没有两个不同的函数来编写文档。但你的方法要好得多。