我在我的箱子中添加了一个功能,增加了serde
支持.但是,我不太明白如何正确使用它:
// #[derive(Debug, Serialize, Deserialize, Clone)] // goes to:
#[derive(Debug, Clone)]
#[cfg(feature = "serde_support")]
#[derive(Serialize, Deserialize)]
pub struct MyStruct;
Run Code Online (Sandbox Code Playgroud)
这段代码将下面的所有内容cfg(feature)
视为有条件编译,因此如果没有我的serde_support
功能,我的箱子也没有MyStruct
.
我试图用大括号包装它,但它给出了另一个错误:
码:
#[derive(Debug, Clone)]
#[cfg(feature = "serde_support")] {
#[derive(Serialize, Deserialize)]
}
pub struct MyStruct;
Run Code Online (Sandbox Code Playgroud)
错误:
error: expected item after attributes
--> mycrate/src/lib.rs:65:33
|
65 | #[cfg(feature = "serde_support")] {
| ^
Run Code Online (Sandbox Code Playgroud)
那怎么做?
Luk*_*odt 27
您可以使用以下cfg_attr(a, b)
属性:
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde_support", derive(Serialize, Deserialize))]
pub struct MyStruct;
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)#[cfg_attr(a, b)] item
将是一样的
#[b] item
,如果a
被设置cfg
,和item
其他.
归档时间: |
|
查看次数: |
1775 次 |
最近记录: |