use std::fmt::Display;
fn largest<T>(list: &[T]) -> &T
where
T: PartialOrd + Display
{
let mut largest = &list[0];
for item in list.iter() {
// item: &i32
// largest: &i32
// &largest: &&i32
if item > &largest {
println!("item > &largest: {}", item > &largest);
}
if item > largest {
println!("item > largest: {}", item > largest);
largest = &item;
}
}
&largest
}
fn main() {
let number_list = vec![34, 50, 45];
let result = largest(&number_list);
println!("The largest number is {}", result);
}
在最大的函数中,item > largest
和item > &largest
都可以编译成功
我try 过将&;I32与&;&;I32进行比较,结果显示错误:no implementation for {integer} < &{integer} and {integer} > &{integer}.
let a = 10; // i32
let b = &a; // &i32
let c = &b; // &&i32
println!("{}", b > c);
我预料的是item > &largest
会引发类似于b > c
的错误.
请告诉我为什么item > &largest
可以编译成功,谢谢.