Solution

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. ```
    }
    ```