Ce face Vec::concat
Pe un slice de vectori ([Vec<T>] sau [[T; N]]), concat() returnează un Vec<T> nou cu toate elementele, în ordine. Pe un slice de texte ([&str] sau [String]), returnează un String.
join(sep) face același lucru, dar pune separatorul între bucăți. Pentru texte, separatorul este un &str: ["Ana", "Mihai"].join(", ") dă "Ana, Mihai". Pentru vectori, separatorul este un element (&T) sau un slice (&[T]).
Originalul nu este modificat; elementele sunt clonate în rezultat. join este cel mai simplu mod de a construi o linie CSV sau o enumerare dintr-un vector de texte.
Parametri
| Parametru | Descriere |
|---|---|
sep |
La join: separatorul pus între bucăți. |
Ce returnează
Un Vec<T> nou (pentru liste de vectori) sau un String nou (pentru liste de texte).
Exemple
Exemplul 1: Unirea grupelor
fn main() {
let grupe = vec![vec!["Ana", "Mihai"], vec!["Ioana"], vec!["Radu", "Elena"]];
let toti = grupe.concat();
println!("{:?}", toti);
let cu_separator = grupe.join(&"|");
println!("{:?}", cu_separator);
}
Rezultat
["Ana", "Mihai", "Ioana", "Radu", "Elena"]
["Ana", "Mihai", "|", "Ioana", "|", "Radu", "Elena"]
Exemplul 2: Texte: concat, join și o linie CSV
fn main() {
let cuvinte = ["Ana", "are", "mere"];
println!("{}", cuvinte.concat());
println!("{}", cuvinte.join(" "));
let orase = vec!["Iași".to_string(), "Cluj".to_string(), "Brașov".to_string()];
println!("Orașe: {}.", orase.join(", "));
let linii = vec!["nume,oras", "Ana,Iași", "Mihai,Cluj"];
println!("{}", linii.join("\n"));
}
Rezultat
Anaaremere
Ana are mere
Orașe: Iași, Cluj, Brașov.
nume,oras
Ana,Iași
Mihai,Cluj
Greșeli frecvente
- Apelezi
joinpe un iterator:v.iter().map(..).join(", ")nu există înstd. Colectează întâi într-unVec<String>și apoi apeleazăjoin. - Încerci
joinpe un vector de numere ca să obții text:[1, 2].join(", ")nu compilează. Transformă numerele în texte:v.iter().map(|n| n.to_string()).collect::<Vec<_>>().join(", ").
Comenzi înrudite
Vec::extend_from_slice: extend_from_slice adaugă copii ale elementelor dintr-un slice; append mută toate elementele altui vector și îl golește.Iterator::flat_map: flatten „turtește” un iterator de colecții într-un singur șir de valori; flat_map aplică întâi o funcție, apoi turtește.Iterator::collect: Consumă iteratorul și adună valorile într-o colecție: Vec, String, HashMap, HashSet, chiar Result sau Option.Vec::to_vec: Creează un Vec nou, cu copii ale elementelor dintr-un slice: dintr-un tablou, dintr-o bucată de vector sau dintr-un &[T].