`for<>` (Higher-Ranked Trait Bounds) सिंटैक्स Rust में सामान्य lifetime बाधाओं से कैसे अलग है?
सभी को नमस्ते! मैं कुछ महीनों से Rust में लिख रहा हूँ, लेकिन अब भी लाइफटाइम के जटिल पहलुओं में भ्रमित हो जाता हूँ। हाल ही में मुझे `for<'a>` सिंटैक्स मिला और मैं समझ नहीं पा रहा हूँ कि यह सामान्य लाइफटाइम बाधाओं से कैसे अलग है।
यहाँ एक उदाहरण है जिसने मुझे भ्रमित किया। मेरे पास एक फंक्शन है जो किसी भी लाइफटाइम के साथ काम करने वाला क्लोजर लेता है:
```rust
fn example(f: F)
where
F: Fn(&str) -> &str
{
let s = String::from("hello");
println!("{}", f(&s));
}
```
लेकिन अगर मैं एक ऐसा क्लोजर पास करने की कोशिश करता हूँ जो आर्गुमेंट का रेफरेंस लौटाता है, तो सब काम करता है। और अगर मैं चाहता हूँ कि क्लोजर किसी भी लाइफटाइम के साथ रेफरेंस स्वीकार करे, तो मैं डॉक्यूमेंटेशन में ऐसा सिंटैक्स देखता हूँ:
```rust
fn example(f: F)
where
F: for<'a> Fn(&'a str) -> &'a str
{
// ...
}
```
इसमें क्या अंतर है?