函数重载

不支持重载:

  • 每个函数都有单个实现:
    • 总是接受固定数量的参数。
    • 总是使用同样的一组参数类型。
  • 不支持默认值:
    • 所有的调用都有同样数量的实参。
    • 有时会使用宏作为替代。

不过,函数参数可以是泛型:

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> 可以在参数类型上提供一种有限的多态。我们会在后面的章节看到更多细节。