有界泛型型別
// 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 也允許未經過型別化的型別。