Avatar ·

क्या Rust में newtypes के लिए Deref ट्रेट को लागू करना उचित है?

सभी को नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है और कोड डिज़ाइन से संबंधित एक दिलचस्प प्रश्न पर पहुँचा हूँ। अक्सर मैं मौजूदा टाइप्स के ऊपर रैपर बनाता हूँ ताकि उनमें सिमैंटिक्स जोड़ सकूँ या कार्यक्षमता को सीमित कर सकूँ। उदाहरण के लिए, मेरे पास एक `UserId` टाइप है जो आंतरिक रूप से `u64` स्टोर करता है:\n\n```rust\nstruct UserId(u64);\n```\n\nमैं चाहता हूँ कि `UserId` के साथ लगभग `u64` की तरह काम किया जा सके (तुलना करना, आउटपुट देना, कॉपी करना)। बेशक, मैं `Display` या `PartialEq` ट्रेट को मैन्युअल रूप से लागू कर सकता हूँ, लेकिन यह बहुत अधिक कोड है।\n\nहालाँकि, मैं एक इडियम पर पहुँचा हूँ जहाँ ऐसे newtypes के लिए `Deref` ट्रेट लागू किया जाता है:\n\n```rust\nuse std::ops::Deref;\n\nimpl Deref for UserId {\n type Target = u64;\n fn deref(&self) -> &u64 {\n &self.0\n }\n}\n```\n\nअब मैं `UserId` पर सीधे `u64` के मेथड्स कॉल कर सकता हूँ, और यह

अभी तक कोई उत्तर नहीं।

लॉग इन करें उत्तर देने के लिए

ब्लॉग