Vec
をパラメータとするmax
関数を書きました。私の期待通りに機能します。1つのVecをRustの複数の関数に渡すには?
fn main() {
let my_array = vec![61, 14, 71, 23, 42, 8, 13, 66];
let max = max(my_array);
let min = min(my_array);
println!("Max value is {}.", max);
}
fn max(array: Vec<i32>) -> i32 {
let mut max = array[0];
for val in array {
if max < val {
max = val;
}
}
max
}
fn min(array: Vec<i32>) -> i32 {
let mut min = array[0];
for val in array{
if min > val {
min = val;
}
}
min
}
錆は私がmin
への呼び出しに同じmy_array
パラメータを置く場合はエラーを報告します:
error[E0382]: use of moved value: `my_array`
--> src/main.rs:4:19
|
3 | let max = max(my_array);
| -------- value moved here
4 | let min = min(my_array);
| ^^^^^^^^ value used here after move
|
= note: move occurs because `my_array` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
それから私は、max
関数と同じmin
の機能を追加しました作品ですか?
[移動セマンティクス](https://doc.rust-lang.org/stable/book/ownership.html#move-semantics)についてお読みください。 –