私はnew_vec
という機能を持っています。 zipされたベクトルから要素のペアに対して要素単位の操作を実行することによって、2つのベクトルを取り、新しいベクトルを作成します。適用される操作で一般的な錆関数を作成するにはどうすればよいですか?
fn main() {
let v1s = vec![1, 0, 1];
let v2s = vec![0, 1, 1];
let v3s = new_vec(v1s, v2s);
println!("{:?}", v3s) // [1, 1, 2]
}
fn new_vec(v1s: Vec<i32>, v2s: Vec<i32>) -> Vec<i32> {
let mut v3s = Vec::<i32>::new();
for (v1, v2) in v1s.iter().zip(v2s.iter()) {
v3s.push(v1 + v2) // would also like to use -
}
v3s
}
私はそのような+
、-
、/
、*
として二つの整数、上で使用することが可能である一般的な二項演算のためのnew_vec
機能を持っていると思います。
どうすればよいですか?私は2つの方法を想像することができます:マクロとクロージャー。例えば、+
と-
のように、これを最も良い方法で行う方法の最小の例が認められます。
私はコピー&ペーストしていない理由があるので、私は一般的なようにしたい機能は、やや長いです:) –