Avatar ·

टाइप-पैरामीटर बाधा (where T: ?Sized) में प्रश्न चिह्न का क्या अर्थ है?

नमस्ते साथियों! मैंने हाल ही में Rust सीखना शुरू किया है और टाइप-पैरामीटर बाधाओं में एक अजीब सिंटैक्स देखा। मैंने ऐसा कोड देखा:\n\n```rust\nuse std::fmt::Debug;\n\nfn print_debug(value: &T) {\n println!("{:?}", value);\n}\n```\n\nमैं समझता हूँ कि `T: Debug` एक बाधा है जो कहती है कि टाइप T को `Debug` ट्रेट को implement करना चाहिए। लेकिन `Sized` से पहले प्रश्न चिह्न क्या करता है? मैं जानता हूँ कि `Sized` एक ऑटोमैटिक ट्रेट है उन टाइप्स के लिए जिनका साइज़ कंपाइल टाइम पर ज्ञात होता है। लेकिन हम `?Sized` क्यों लिख सकते हैं? इससे क्या बदलता है?\n\nमैंने `?Sized` हटाकर सिर्फ `T: Debug` लिखने की कोशिश की, और कोड फिर भी कंपाइल हो गया। तो फिर अंतर क्या है? `?Sized` का उपयोग कब करना चाहिए? और क्या बाधाओं में प्रश्न चिह्न के अन्य उपयोग भी हैं?