函数重载

不支持重载:

  • 每一个函数都只有一种实现:
    • 始终接受固定个数的形参。
    • 始终接受一组形参类型。
  • 不支持提供默认值:
    • 实参的数量在所有调用的地方都是一样的。
    • 有时可以用宏(Macro)作为替代。

然而,函数形参可以是泛型(generics):

fn pick_one<T>(a: T, b: T) -> T {
    if std::process::id() % 2 == 0 { a } else { b }
}

fn main() {
    println!("coin toss: {}", pick_one("heads", "tails"));
    println!("cash prize: {}", pick_one(500, 1000));
}
  • 标准库中的 Into<T> 通过泛型参数提供了一种具有有限多态性的参数类型。详见之后的章节。