我有一个特征Mode
,几个结构MyModeN
和一个类似对象的结构<MyMode: Mode> Obj<MyMode>
。
我想构建一个通用转换函数,该函数输出新对象并进行一些重新初始化。编写函数不是问题,正确获取类型签名和impl块是问题。
我尝试过
impl <MyMode: Mode, NewMode: Mode> Obj<MyMode> {
pub fn convert(self, m: NewMode) -> Obj<NewMode> { unimplemented!() }
}
但是失败,因为在对象本身中未指定NewMode
。使用impl
代替NewMode,即
pub fn convert(self, m: impl Mode) -> Obj<impl Mode>
也无济于事,因此我无法使用
impl Obj<MyModeN> { .. }
块。
如何实现我想要的行为?
尝试向函数而不是impl块添加第二个通用参数: