作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始使用 rust 并且正在开发一个库。
以下工作,但似乎是代码重复
#[cfg(feature = "serde_support")]
use serde::Serialize;
#[cfg(not(feature = "serde_support"))]
pub struct Teststruct<T>
{
graph: T
}
#[cfg(feature = "serde_support")]
#[derive(Serialize)]
pub struct Teststruct<T>
where T: Serialize
{
graph: T
}
where T: Serialize
在这个例子中没有严格要求,它
是 我目前面临的问题需要。
#[cfg(feature = "serde_support")]
use serde::Serialize;
#[cfg_attr(feature = "serde_support", derive(Serialize))]
pub struct Teststruct<T: Node>
where T: Serialize,
Graph<T>: Serialize + DeserializeOwned
{
graph: Graph<T>
}
Serialize
在此范围内找不到。
最佳答案
你可以引入一个新的中间特征 MySerialize
,因此您始终需要 MySerialize
而不是 Serialize
,因此仅在一个地方进行此切换。
派生可以通过 cfg_attr
解决.
#[cfg(feature = "serde_support")]
use serde::Serialize;
#[cfg(feature = "serde_support")]
pub trait MySerialize : Serialize {}
#[cfg(not(feature = "serde_support"))]
pub trait MySerialize {}
#[cfg_attr(feature = "serde_support", derive(Serialize))]
pub struct Teststruct<T>
where T: MySerialize
{
graph: T
}
关于Rust - 特征绑定(bind)取决于特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61392550/
我是一名优秀的程序员,十分优秀!