練習:泛型 min
在這個簡短練習中,您將使用 LessThan
特徵實作泛型 min
函式,藉此判定兩個值中的最小值。
trait LessThan { /// Return true if self is less than other. fn less_than(&self, other: &Self) -> bool; } #[derive(Debug, PartialEq, Eq, Clone, Copy)] struct Citation { author: &'static str, year: u32, } impl LessThan for Citation { fn less_than(&self, other: &Self) -> bool { if self.author < other.author { true } else if self.author > other.author { false } else { self.year < other.year } } } // TODO: implement the `min` function used in `main`. fn main() { let cit1 = Citation { author: "Shapiro", year: 2011 }; let cit2 = Citation { author: "Baumann", year: 2010 }; let cit3 = Citation { author: "Baumann", year: 2019 }; debug_assert_eq!(min(cit1, cit2), cit2); debug_assert_eq!(min(cit2, cit3), cit2); debug_assert_eq!(min(cit1, cit3), cit3); }