Vale a pena implementar o trait Deref para newtypes em Rust?
Olá a todos! Recentemente comecei a estudar Rust e me deparei com uma questão interessante sobre design de código. Frequentemente crio wrappers sobre tipos existentes para adicionar semântica ou limitar funcionalidades. Por exemplo, tenho um tipo `UserId` que internamente armazena um `u64`:
```rust
struct UserId(u64);
```
Quero que `UserId` possa ser trabalhado quase como um `u64` (comparar, exibir, copiar). Claro, posso implementar manualmente os traits `Display` ou `PartialEq`, mas isso dá muito código.
No entanto, me deparei com um idioma onde para esses newtypes implementam o trait `Deref`:
```rust
use std::ops::Deref;
impl Deref for UserId {
type Target = u64;
fn deref(&self) -> &u64 {
&self.0
}
}
```
Agora posso chamar métodos de `u64` diretamente em `UserId`, e ele