Ce face Vec::fill
fill(valoare) înlocuiește fiecare element cu o copie a valorii date. Lungimea rămâne aceeași. Metoda vine de la slice-uri, deci o poți aplica și pe o bucată: v[2..5].fill(0) umple doar pozițiile 2, 3 și 4.
Valoarea trebuie să implementeze Clone. Pentru valori calculate pentru fiecare poziție există fill_with(|| ...).
Parametri
| Parametru | Descriere |
|---|---|
value |
Valoarea scrisă în fiecare poziție. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Resetare și umplerea unei bucăți
fn main() {
let mut scoruri = vec![12, 7, 30, 4, 18];
scoruri.fill(0);
println!("{:?}", scoruri);
let mut rand = vec!['.'; 8];
rand[2..5].fill('#');
println!("{}", rand.iter().collect::<String>());
}
Rezultat
[0, 0, 0, 0, 0]
..###...
Exemplul 2: Program săptămânal și fill_with
fn main() {
let mut program = vec![String::new(); 5];
program.fill(String::from("liber"));
program[1..3].fill(String::from("ocupat"));
println!("{:?}", program);
let mut n = 0;
let mut numere = vec![0; 5];
numere.fill_with(|| {
n += 10;
n
});
println!("{:?}", numere);
}
Rezultat
["liber", "ocupat", "ocupat", "liber", "liber"]
[10, 20, 30, 40, 50]
Greșeli frecvente
- Te aștepți ca
fillsă adauge elemente într-un vector gol. Un vector gol rămâne gol; pentru lungime nouă foloseșteresizesauvec![valoare; n]. - Scrii
v[2..10].fill(0)pe un vector mai scurt de 10:panicpentru interval invalid.
Comenzi înrudite
Vec::resize: Schimbă lungimea vectorului: îl taie dacă e prea lung sau adaugă copii ale unei valori până la noua lungime.Vec: Vectorul dinamic din Rust: o listă de elemente de același tip, ținute unul după altul în memorie, care crește singură.Vec::iter: Cele trei moduri de a parcurge un vector: iter dă referințe, iter_mut dă referințe mutabile, into_iter dă elementele.