有界泛型类型
// 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 也允许未经过类型化的类型。