Avatar ·

Rust में प्रश्न चिह्न (?) ऑपरेटर क्या करता है और यह त्रुटियों के साथ कैसे काम करता है?

सभी को नमस्ते! मैं Rust में नया हूँ और त्रुटि प्रबंधन को समझने की कोशिश कर रहा हूँ। अक्सर दूसरों के कोड में मैं एक अजीब प्रश्न चिह्न ऑपरेटर — `?` देखता हूँ। उदाहरण के लिए, यह कोड: ```rust use std::fs::File; use std::io::Read; fn read_file(path: &str) -> Result { let mut file = File::open(path)?; let mut content = String::new(); file.read_to_string(&mut content)?; Ok(content) } ``` मैं समझता हूँ कि `File::open` एक `Result` लौटाता है, लेकिन पंक्ति के अंत में यह `?` क्या करता है? इसके बिना कंपाइलर शिकायत करता है कि मैं `Result` को हैंडल नहीं कर रहा हूँ। लेकिन अगर मैं `?` जोड़ दूँ, तो कोड काम करता है। मैंने डॉक्यूमेंटेशन पढ़ने की कोशिश की, लेकिन वहाँ जटिल लिखा है। क्या आप सरल शब्दों में समझा सकते हैं: यह जादुई प्रश्न चिह्न क्या है? क्या इसका `unwrap()` या `match` से कोई संबंध है? फंक्शन `Result` क्यों लौटाता है, लेकिन बॉडी में मैं `?` का उपयोग कर सकता हूँ और हर कॉल के लिए match नहीं लिख सकता? एक उदाहरण जो मुझे भ्रमित करता है: अगर मैं `?` को `.unwrap()` से बदल दूँ, तो कोड भी काम करता है, लेकिन त्रुटि होने पर प्रोग्राम क्रैश हो जाता है।