What traits to implement for a smart pointer?


I’ve got my smart pointers (using RCU) basically written and delightfully fast, but now I’ve come to the question of what traits thru should implement. Looking at Rc and Box in the standard library, they seem to implement the kitchen sink. Basically they seem to implement close to every trait the standard library has. Is this what I need to do to create something with similar ergonomics? It seems so very ugly.

I presume the issue is the deref coercion doesn’t kick in unless you are using a method or explicitly derefing, so in practice we don’t get these implementations for free. It still feels wrong to implement all these traits, because there will always exist traits that I don’t implement and are therefore let convenient to use.