fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut largest = &list[0];

    for item in list {
        if item > largest {
            largest = item;
        }
    }

    largest
}
// We read this definition as: the function "largest" is generic over some type "T".
// This function has one parameter named "list", which is a slice of values of type "T".
// The "largest" function will return a reference to a value of the same type "T".
We read this definition as: the function "largest" is generic over some type "T".
This function has one parameter named "list", which is a slice of values of type "T".
The "largest" function will return a reference to a value of the same type "T".
We read this definition as : the function " largest " is generic over some type " T " . This function has one parameter named " list " which is a slice of values of type " T " . The " largest " function will return a reference to a value of the same type " T " .
fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut largest = &list[0];
    for item in list {
        if item > largest {
            largest = item;
        }
    }
    largest
}
fn largest < T : PartialOrd > ( list : & [ T ] ) -> & T { let mut largest = & list [ 0 ] ; for item in list { if item > largest { largest = item ; } } largest }
We read this definition as: the function "largest" is generic over some type "T".
We read this definition as : the function " largest " is generic over some type " T " .
list
&[T]
list
&[T]