可变性可以成为特征中的通用参数吗?我想为类型的可变和不可变变体实现特征,而无需复制和粘贴 impl
block 。
trait Foo<T> {…} impl<T> Foo for *const T {…} impl<T> Foo for *mut T {…same thing again…}
一厢情愿的伪代码:
trait Foo<T> {…} impl<T, Mutability> Foo for *Mutability T {…}
最佳答案
Can mutability be a generic parameter in traits?
没有。 ^_^
这里有一些关于此事的详细讨论(Internals,Reddit)。
我认为一般来说,人们认识到当前的状态并不理想,但目前也没有受到太大的限制。人们担心它将如何实现以及各种方法的合理性。有些人想知道 Higher-Kinded Types (HKTs) 是否可以解决这个问题,是否以及何时将它们添加到 Rust 中。
另见:
关于rust - 如何实现任何可变性的特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388032/