//struct Point<T, U> {
// x: T,
// y: U,
//}
//impl<T, U> Point<T, U> {
// fn x(&self) -> &T {
// &self.x
// }
//
// fn y(&self) -> &T {
// &self.y
// }
// fn mixup<V, W>(self, other: Point<V, W>) -> Point<T, W> {
// Point {
// x: self.x,
// y: other.y,
// }
// }
//}
fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
let mut largest = list[0];
for &item in list.iter() {
if item > largest {
largest = item;
}
}
largest
}
//enum Option_i32 {
// Some(i32),
// None,
//}
//
//enum Option_f64 {
// Some(f64),
// None,
//}
fn main() {
let number_list = vec![34, 50, 25, 100, 65];
dbg!(largest(&number_list));
let char_list = vec!['h', 'e', 'l', 'l', 'o'];
dbg!(largest(&char_list));
// let integer = Point { x: 5, y: 10 };
// let float = Point { x: 5.0, y: 10.0 };
// let p = Point { x: 5.0, y: 10.5 };
// dbg!(p.x());
// dbg!(p.y());
// let p1 = Point { x: 5, y: 10.4 };
// let p2 = Point { x: "Hello", y: 'c' };
// let p3 = p1.mixup(p2);
//
// dbg!(p3.x);
// dbg!(p3.y);
// let integer = Option_i32::Some(5);
// let float = Option_f64::Some(5.0);
}