Definición
Permite a las funciones utilizar cualquier tipo de dato, y se puede usar en conjunto de los Traits para exigir que puedan hacer ciertas cosas, por ejemplo
struct Celsius(i32);
impl std::cmp::PartialEq for Celsius {
fn eq(&self, other: &Self) -> bool {
return self.0 == other.0;
}
fn ne(&self, other: &Self) -> bool {
return !(self.eq(other));
}
}
Donde std::cmp::PartialEq
es un trait para comparar dos objetos del mismo tipo.
También se usa para funciones de la siguiente forma
fn comparar<T: std::cmp::PartialEq>(primero: T, segundo: T) {
if primero == segundo {
println!("Son iguales");
} else {
println!("Son distintos");
}
}
let primera_temperatura: Celsius = Celsius(45);
let segunda_temperatura: Celsius = Celsius(34);
// imprime que son distintos porque Celsius implementa ese trait
comparar(primera_temperatura, segunda_temperatura);