有界泛型型別

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