La API entry en Rust
Una búsqueda en vez de dos: entry te da la casilla, ocupada o no.
use std::collections::HashMap;
fn main() {
let text = "the quick the lazy the end";
let mut counts: HashMap<&str, u32> = HashMap::new();
for word in text.split_whitespace() {
*counts.entry(word).or_insert(0) += 1;
}
let mut groups: HashMap<usize, Vec<&str>> = HashMap::new();
for word in text.split_whitespace() {
groups.entry(word.len()).or_insert_with(Vec::new).push(word);
}
println!("{}", counts["the"]);
println!("{:?}", groups.get(&4));
}
Cómo funciona
or_insertdevuelve una referencia mutable al valor.or_insert_withconstruye el valor por defecto solo si hace falta.*count += 1escribe a través de esa referencia.
Palabras clave y builtins usados aquí
Vecfnforinletmutstru32useusize
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 448
- Tokens
- 147
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 98 segundos.
Paso 5 de 8 en Colecciones; paso 34 de 39 en Fundamentos del lenguaje.