#[derive(Debug)] struct Point { x: T, y: U, } // T and U are declared for impl for it goes with struct impl Point { fn new(value: T, v: U) -> Self { Point {x: value, y: v} } // X1 and Y1 are only relavent to method mixup fn mixup(self, other: Point) -> Point { Point {x: self.x, y: other.y} } } fn largest(list: &[T]) -> &T { let mut largest = &list[0]; for item in list { if largest < item { largest = item; } } largest } fn main() { let x = [1,3,5,7,9]; let y = ['a','b','c','d','e']; let result = largest(&x); println!("{result}"); let result = largest(&y); println!("{result}"); let result = Point::new(3.5,7); println!("{},{}",result.x, result.y); let result = result.mixup(Point::new("hello",'c')); println!("{},{}",result.x, result.y); }