Rust中具有特征的对象的通用类型转换

问题描述 投票:1回答:1

我有一个特征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> { .. }

块。

如何实现我想要的行为?

rust
1个回答
0
投票

尝试向函数而不是impl块添加第二个通用参数:

© www.soinside.com 2019 - 2024. All rights reserved.