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 contents = String::new();
file.read_to_string(&mut contents)?; // और यहाँ?
Ok(contents)
}
```
मैंने इस ऑपरेटर के बिना, `match` का उपयोग करके समान कोड लिखने की कोशिश की, और यह बहुत बोझिल हो गया:
```rust
fn read_file_verbose(path: &str) -> Result {
let mut file = match File::open(path) {
Ok(f) => f,
Err(e) => return Err(e),
};
let mut contents = String::new();
match file.read_to_string(&mut contents) {
Ok(_) => {},
Err(e) => return Err(e),
};
Ok(contents)
}
```
तो, `?` पूरी match अभिव्यक्ति को बदल देता है।