Struct, Enum और Trait
Rust Generics
Write a function or struct once and use it with many types, with no cost at run time.
आप क्या सीखेंगे
- Type parameters
- Trait bounds
- Generic structs
largest<T>
largest(&[3, 9, 4])9largest(&[2.5, 1.5])2.5largest(&['x', 'b'])'x'One definition, many types
Generics let you write code once and use it with different types. A type parameter such as T stands for a type that is chosen where the code is used.
T: PartialOrd + Copy is a trait bound: largest accepts any type that can be compared and copied, so it works with integers, floats and characters. Pair<T> is a generic struct, and its impl block is generic too. The compiler creates a separate version for each type, so generics cost nothing at run time.
मुख्य बातें
- T stands for a type chosen at the call.
- T: PartialOrd limits T to comparable types.
- The compiler makes a version per type.
चलने योग्य Rust उदाहरण
Rust
main.rs
fn largest<T: PartialOrd + Copy>(items: &[T]) -> T {
let mut largest = items[0];
for &item in items {
if item > largest {
largest = item;
}
}
largest
}
#[derive(Debug)]
struct Pair<T> {
left: T,
right: T,
}
impl<T: Copy> Pair<T> {
fn swap(&self) -> Pair<T> {
Pair { left: self.right, right: self.left }
}
}
fn main() {
println!("{}", largest(&[3, 9, 4]));
println!("{}", largest(&[2.5, 1.5]));
println!("{}", largest(&['x', 'b']));
let pair = Pair { left: "a", right: "b" };
println!("{:?}", pair.swap());
}
9
2.5
x
Pair { left: "b", right: "a" }अभ्यास
उदाहरण को ऑनलाइन कंपाइलर में खोलें, कोई मान बदलें या एक पंक्ति जोड़ें, और चलाने से पहले आउटपुट का अनुमान लगाएँ। फिर कोड में जान-बूझकर गलती करें और कंपाइलर का संदेश पढ़ें।
यह पाठ पूरा कर लिया?
अपनी प्रगति ट्रैक करने के लिए इसे सीखा हुआ मार्क करें।
आपकी प्रगति इस ब्राउज़र में सेव है इसे हर डिवाइस पर रखने के लिए साइन इन करें।
चैलेंज से अभ्यास करें
इस पाठ में सीखी बात से एक असली समस्या हल करें। हर चैलेंज ब्राउज़र में चलता है, तुरंत टेस्ट और AI रिव्यू के साथ।
- न्यूनतम मान वाला स्टैक एक stack बनाएँ जो push या pop के बाद तुरंत अपना सबसे छोटा element बता सके। मध्यम