В Rust, по релизиозно-техническим причинам не хотят добавлять перегрузку функций по параметрам. Фактически, доступен только вариант из Си с созданием кучи функций с разными именами. На мой взгляд, это просто дико не удобно. Немного подумав, нашел не очень красивый, но работающий обходной вариант:
i(int),
s(str)
}
fn foo(param: foo_param) {
alt param {
i(int_val) {
io::println(#fmt("foo was called with int == %d", int_val));
}
s(str_val) {
io::println(#fmt("foo was called with str == %s", str_val));
}
}
}
fn main() {
foo(i(10));
foo(s("test"));
}