【发布时间】:2021-03-25 05:04:58
【问题描述】:
我正在尝试找到一种方法来对不同的特征进行分组,以便通用变量可以容纳这些特征。
例如,我试图让 T 具有 io::Read + io::Write + io::Seek 的特征。 现在,可以使用以下代码在 rust 中轻松完成:
pub trait RWS: io::Read + io::Write + io::Seek{}
impl<T> RWS for T where T: io::Read + io::Write + io::Seek{}
但是,当尝试拥有一个接收 BufReader 的函数时,问题就出现了,因为 BufReader 没有实现 io::Write。
因此, 是否有可能为可以是其中一种的通用类型实现如下所示的内容?
pub trait RWS: io::Read || io::Write || io::Seek{}
impl<T> RWS for T where T: io::Read || io::Write || io::Seek{}
【问题讨论】:
-
你打算用
RWStrait 做什么?这三个特征暴露了不同的功能,所以我不太明白如何将它们统一在一个特征RWS。 -
@AlphaModder 我并没有尝试使用所有这些,我试图对其中任何一个强加要求。对于 RWS,我试图在结构
io中存储一个字段,以便它可以是(读、写、查找)之一。这个io字段将根据调用的函数而改变。这就是我希望它灵活的原因。 -
我明白了。那么存储在该字段中的类型会在结构的生命周期内发生变化吗?它是否需要同时使用多个,还是能够一次将其用作
Read、Write或Seek之一? -
@AlphaModder 是的,该结构中的类型将在整个生命周期内发生变化。我想我把它编程为使用一个。
标签: rust