Can mutability be a generic parameter in traits? I'd like to implement a trait for a mutable and an immutable variant of a type without having to copy&paste the impl
block.
trait Foo<T> {…} impl<T> Foo for *const T {…} impl<T> Foo for *mut T {…same thing again…}
Wishful pseudocode:
trait Foo<T> {…} impl<T, Mutability> Foo for *Mutability T {…}
Can mutability be a generic parameter in traits?
No. ^_^
Here's some detailed discussion on the matter (Internals, Reddit).
I think in general people recognize that the current state is not ideal, but that it's not terribly constraining at the moment, either. There's concerns on exactly how it would be implemented and the soundness of various approaches. Some people wonder if Higher-Kinded Types (HKTs) would solve the problem, if and when they are added to Rust.
See also:
来源:https://stackoverflow.com/questions/28388032/how-to-implement-a-trait-for-any-mutability