文章目录
泛型数据比较
基于struct实现的简单的多数据泛型间比较
#[derive(Debug, PartialEq)]
struct LargestNumber<T>{
index: usize,
value: T,
}
fn
find_largest_number<T>(number_list: &[T]) -> LargestNumber<T>
where T: Display + PartialOrd + Copy,
{
let length: usize = number_list.len().try_into().unwrap();
if length < 1 {
panic!("Less than one number in list!");
}
let mut max_number_item: LargestNumber<T> = LargestNumber{
value: number_list[0],
index: 0,
};
let mut index: usize = 0;
while index < length{
if number_list[index] > max_number_item.value{
max_number_item.index = index;
max_number_item.value = number_list[index];
}
index += 1;
}
max_number_item
}
#[cfg(test)]
mod test{
use super::*;
#[test]
fn test_find_largest_number(){
let number_list = vec![34, 50, 25, 100, 65];
let max_number = find_largest_number(&number_list);
assert_eq!(100, max_number.value);
let number_list = vec![102, 34, 6000, 89, 54, 2, 43, 8];
let max_number = find_largest_number(&number_list);
assert_eq!(6000, max_number.value);
let number_list = vec!['a', 'b', 'E', 'N', 'z'];
let max_number = find_largest_number(&number_list);
assert_eq!('z', max_number.value);
}
}