2 use std::io::prelude::*;
4 pub fn read_file(path: &str) -> Result<String, std::io::Error> {
5 let mut s = String::new();
7 .read_to_string(&mut s)?;
11 // needs Copy trait, good for simple types
12 pub fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
13 let mut result = list[0];
22 // expensive for large strings, don't use that
23 pub fn largest_clone<T: PartialOrd + Clone>(list: &[T]) -> T {
24 let mut result = list[0].clone();
33 // good for everything, but more expensive for simple types
34 pub fn largest_ref<T: PartialOrd>(list: &[T]) -> &T {
35 let mut result = &list[0];
44 pub fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
45 if x.len() > y.len() {