如何在Rust中创建可变数量参数的函数?
大家好!我刚开始在C++和Python之后学习Rust,遇到了一个问题。在C++中,我可以通过`...`(variadic templates)编写可变数量参数的函数,在Python中则通过`*args`。例如,我想创建一个`sum_all`函数,它可以对任意数量的整数求和:
```rust
// 我该如何在Rust中实现?
fn sum_all(...) -> i32 {
// 这里写什么
}
fn main() {
println!("{}", sum_all(1, 2, 3)); // 6
println!("{}", sum_all(10, 20, 30, 40)); // 100
}
```
我了解到Rust不支持像C那样的经典variadic functions。但可以用宏?或者使用切片?我尝试过传递vector,但每次都要创建`vec!`很不方便。在Rust中有没有惯用的方法来实现这个?我需要一个针对同一类型(整数)的任意数量参数的解决方案。如果能提供详细示例,我将不胜感激!
P.S. 我知道求和可以用`.sum()`,但这只是一个例子——我需要理解原理。