Rust में फ़ंक्शन को पैरामीटर के रूप में कैसे पास करें?
सभी को नमस्कार! मैंने अभी Rust सीखना शुरू किया है, और मुझे एक समस्या आई है जो सरल लगती है, लेकिन मुझे सही समाधान नहीं मिल रहा है। मैं एक फ़ंक्शन लिखना चाहता हूँ जो दूसरे फ़ंक्शन को argument के रूप में ले, ताकि कोड अधिक लचीला हो।
मैं यह करने की कोशिश कर रहा हूँ:
```rust
fn apply_twice(f: ???, x: i32) -> i32 {
f(f(x))
}
fn add_one(x: i32) -> i32 {
x + 1
}
fn main() {
let result = apply_twice(add_one, 5);
println!("{}", result); // 7 की उम्मीद
}
```
मुझे समझ नहीं आ रहा कि पैरामीटर `f` के लिए कौन सा type दूँ। `fn(i32) -> i32` आज़माया, लेकिन compiler error देता है। साथ ही closures और traits `Fn`, `FnMut`, `FnOnce` के बारे में सुना है — लेकिन इनमें क्या अंतर है? प्रत्येक का उपयोग कब करें? एक closure कैसे पास करें जो बाहरी scope के variables को capture करता है?
कृपया समझाएँ कि Rust में फ़ंक्शन और closures को सही तरीके से कैसे पास करें। कोड उदाहरणों के साथ समझाएँ। पहले से धन्यवाद!