1. ```
use std::cmp::Ordering;
```
3. ```
fn min<T: Ord>(l: T, r: T) -> T {
```
4. ```
match l.cmp(&r) {
```
5. ```
Ordering::Less | Ordering::Equal => l,
```
6. ```
Ordering::Greater => r,
```
7. ```
}
```
8. ```
}
```
10. ```
fn main() {
```
11. ```
assert_eq!(min(0, 10), 0);
```
12. ```
assert_eq!(min(500, 123), 123);
```
14. ```
assert_eq!(min('a', 'z'), 'a');
```
15. ```
assert_eq!(min('7', '1'), '1');
```
17. ```
assert_eq!(min("hello", "goodbye"), "goodbye");
```
18. ```
assert_eq!(min("bat", "armadillo"), "armadillo");
```
19. ```
}
```