MalformedFeatureAttribute:特性属性格式错误时发生的错误。 RemoveExprNotSupported:不支持的删除表达式错误。 WrongFragmentKind:错误的片段类型时发生的错误。 UnsupportedKeyValue:不支持的键值对错误。 下面对每个enum进行一一介绍: MalformedFeatureAttributeHelp:特性属性格式错误的帮助信息。 InvalidCfg:无效的配置信息的帮助...
at: DiskPtr, }, // a failpoint has been triggered for testing purposes #[doc(hidden)] #[cfg(feature = "failpoints")] FailPoint, } 而在设计之初就知道很有可能甚至是一定会发生的错误应该直接在发生错误的函数内处理掉,无需向上传播给调用者. 这种类型的错误需要有完全单独的错误类型,比如CompareAnd...
还有一种不遵循 Rust 语法规则的宏和指令也能运行: #[cfg(all(not(baremetal), any(feature = “hazmat”, feature = “debug_print”)))] 上面的语句中最令我困惑的是使用‘=’来表示等价而不是赋值,因为配置指令中的内容不是 Rust 代码,它就像一个完全独立的元语言。 再比如,Rust 宏的可读性也存在问...
RemoveExprNotSupported:不支持的删除表达式错误。 WrongFragmentKind:错误的片段类型时发生的错误。 UnsupportedKeyValue:不支持的键值对错误。 下面对每个enum进行一一介绍: MalformedFeatureAttributeHelp:特性属性格式错误的帮助信息。 InvalidCfg:无效的配置信息的帮助信息。 这些struct和enum的目的是为了在扩展宏过程中对错...
#[cfg(not(feature="backtrace"))]fnhook_panic(){std::panic::set_hook(Box::new(|p|{event!(panic&format!("ezlog: \n {p:?}"));}));} 在崩溃时会回调拿到 PanicInfo 代码语言:javascript 复制 PanicInfo{payload:Any{..},message:Some(asdf),location:Location{file:"ezlog-core/src/lib.rs...
如果你用cargo build --features "foo"编译,他会向rustc传递--cfg feature="foo"标记,并且输出中将会包含mod foo。如果我们使用常规的cargo build编译,则不会传递额外的标记,因此,(输出)不会存在foo模块。 cfg_attr 你也可以通过一个基于cfg变量的cfg_attr来设置另一个属性: ...
单个标识符代表属性名,后面跟着一个逗号隔开的子属性的列表,如#[cfg(and(unix, not(windows)))] 在#后面还可以紧跟一个!,比如#![feature(box_syntax)],这表示这个属性是应用于它所在的这个Item。而如果没有!则表示这个属性仅应用于紧接着的那个Item。
##[cfg(not(feature ="std"))]// needed for `cargo test --features std`#modno_std{// This is a type alias for the enabled `restore-state-*` feature.// For example, it is `bool` if you enable `restore-state-bool`.usecritical_section::RawRestoreState;structMyCriticalSection;critical...
A project with which I work (https://github.com/embassy-rs/embassy) uses cargo cfgs not of the feature variety, which is then subsequently used in cfg_attr to adjust use statements. For instance, the build.rs does something basically like: println!("cargo:rustc-cfg=usart_v3"); (the...
// src/libcore/str/mod.rs#[lang = "str"]#[cfg(not(test))]implstr{// ...#[stable(feature = "rust1", since = "1.0.0")]#[rustc_const_stable(feature = "const_str_len", since = "1.32.0")]#[inline]pubconstfnlen(&self)->usize{self.as_bytes().len()}// ...#[stable(fe...