Je veux passer un tableau à une fonction et changer le contenu à l'intérieur. Comment puis-je faire cela, voici mon code ci-dessous, mais bien sûr, cela ne fonctionne pas.
fn change_value(mut arr: &[i32]) {
arr[1] = 10;
}
fn main() {
let mut arr: [int; 4] = [1, 2, 3, 4];
change_value(&arr);
println!("this is {}", arr[1]);
}
Je reçois cette erreur:
error[E0412]: cannot find type `int` in this scope
--> src/main.rs:6:20
|
6 | let mut arr: [int; 4] = [1, 2, 3, 4];
| ^^^ not found in this scope
J'ai cherché autour, mais en tant que jolie novice Rust programmeur, je ne trouve rien.
Références rouille (désignées par &
signe) sont de deux types: immuables (&T
) et mutable (&mut T
). Afin de changer la valeur derrière la référence, cette référence doit être modifiable, il vous suffit donc de passer &mut [i32]
à la fonction, pas &[i32]
:
fn change_value(arr: &mut [i32]) {
arr[1] = 10;
}
fn main() {
let mut arr: [i32; 4] = [1, 2, 3, 4];
change_value(&mut arr);
println!("this is {}", arr[1]);
}
Vous n'avez pas non plus besoin de mut arr
dans change_value
argument parce que mut
indique la mutabilité de cette variable, pas des données vers lesquelles elle pointe. Donc avec mut arr: &[int]
vous pouvez réaffecter arr
lui-même (pour qu'il pointe vers une autre tranche), mais vous ne pouvez pas modifier les données auxquelles il fait référence.