Avatar ·

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

No answers yet.

Faça login para deixar uma resposta

Blogs