▲ | itishappy 2 days ago | |
That gets us halfway there. It makes unwrapping easy, but you still need to remember to rewrap if you've implemented anything.
Also using newtypes to reimplement methods on the base type is frowned upon. I believe that this is why #[derive(Deref)] isn't included in the standard library. See below (emphasis mine):> So, as a simple, first-order takeaway: if the wrapper is a trivial marker, then it can implement Deref. If the wrapper's entire purpose is to manage its inner type, without modifying the extant semantics of that type, it should implement Deref. If T behaves differently than Target when Target would compile with that usage, it shouldn't implement Deref. https://users.rust-lang.org/t/should-you-implement-deref-for... |