Avatar ·

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

सभी को नमस्कार! मैंने हाल ही में Rust सीखना शुरू किया है और कोड डिज़ाइन से संबंधित एक दिलचस्प प्रश्न का सामना किया। अक्सर मैं मौजूदा प्रकारों के ऊपर रैपर बनाता हूँ ताकि उनमें सिमैंटिक्स जोड़ सकूँ या कार्यक्षमता को सीमित कर सकूँ। उदाहरण के लिए, मेरे पास एक `UserId` प्रकार है जो आंतरिक रूप से `u64` स्टोर करता है:\n\n```rust\nstruct UserId(u64);\n```\n\nमैं चाहता हूँ कि `UserId` के साथ लगभग `u64` की तरह काम किया जा सके (तुलना करना, प्रदर्शित करना, कॉपी करना)। बेशक, मैं मैन्युअल रूप से `Display` या `PartialEq` ट्रेट को लागू कर सकता हूँ, लेकिन यह बहुत सारा कोड होगा।\n\nहालाँकि, मैं एक ऐसी इडियम पर पहुँचा हूँ जहाँ ऐसे नए प्रकारों के लिए `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` के मेथड्स कॉल कर सकता हूँ, और यह

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

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

ब्लॉग