3
mutability는 형질에서 일반적인 매개 변수가 될 수 있습니까? 나는 impl
블록을 붙여 넣기 할 필요없이 복사 할 필요없이 변형 가능하고 변형 할 수없는 변종에 대한 특성을 구현하고 싶습니다.임의의 변이성에 대한 특성을 구현하는 방법은 무엇입니까?
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 {…}
임시 해결책으로 두 impl을 모두 생성하도록 private 매크로를 정의하거나 캐스트를 사용하여 한 variant의 구현을 다른 것에 전달할 수 있습니다 :'* const T'에 대해 구현 한 다음'* mut T'에 대한 impl을 as '(self as * const T) .method()'또는 이와 비슷한 것. – delnan
캐스팅은 아마도이 경우에 가장 많이 보인 해결책 일 것입니다. 나는 사람들이'const T' 포인터를 유지하고 명시 적으로 필요할 때만'mut T '로 캐스트하는 것을 보았다고 생각한다. 더 일반적으로, 사람들은 mutability에 대해 매개 변수화 된 값을 반환 할 수 있고, 참조의 변경 가능성을 바꿀 수 있기를 원합니다. '& T' <->'& mut T'. 나는 그런 경우에 주조하거나 변용하는 것에 대해 매우 조심 스러울 것이다. – Shepmaster