有界泛型类型
// Only accept T and U generic types that also implement Debug
fn print_objects<T: Debug, U: Debug>(a: T, b: U) {
println!("A: {:?} B: {:?}", a, b);
}
print_objects(13, 44);
// or annotated explicitly
print_objects::<usize, u16>(13, 44);
边界必须涵盖该类型的所有用途。增加是由 std::ops::Add 特征完成的,它具有输入和输出参数本身。where T: std::ops::Add<u32,Output=U> 表示可以将 Add T 转换为 u32,并且此添加必须生成 U 类型。
fn try_add_one<T, U>(input_value: T) -> Result<U, String>
where T: std::ops::Add<u32,Output=U>
{
return Ok(input_value + 1);
}
Sized bound 默认隐含。?Sized bound 也允许未经过类型化的类型。