我不确定设计模式叫什么,但我有一个不可变的数据 struct S,它有一个名为update
的异步方法,它返回Result<Self>
(基本上是克隆自身并应用由方法参数表示的更新).我想将这update
routine 移到特征中,但遇到了问题,因为有很多地方要求特征是对象安全的,但很明显,返回类型中的Self
不是对象安全的.
"traifying"这个方法的目的是我想在不同的地方引用trait,这样我就可以在代码的其余部分不关心的情况下交换正在使用的实现.
我猜这就是存在主义类型可能解决的问题,但我很好奇现在是否有一种方法可以使我的代码个性化.如果我不是以一种"Rust "的方式做事,我很乐意按需要重组S
,但我想知道,这在今天的"铁 rust "中是不是不可能的: