traduccion ps4 lenguaje language juego rust

ps4 - rust traduccion



Inicialización HashMap más concisa (1)

Puede utilizar iteradores para emular la comprensión del diccionario, por ejemplo,

let counts = "ACGT".chars().map(|c| (c, 0_i32)).collect::<HashMap<_, _>>();

o incluso for c in "ACGT".chars() { counts.insert(c, 0) } .

Además, se puede escribir una macro para permitir una inicialización concisa de valores arbitrarios.

macro_rules! hashmap { ($( $key: expr => $val: expr ),*) => {{ let mut map = ::std::collections::HashMap::new(); $( map.insert($key, $val); )* map }} }

utilizado como let counts = hashmap![''A'' => 0, ''C'' => 0, ''G'' => 0, ''T'' => 0]; .

Estoy usando un HashMap para contar las ocurrencias de diferentes caracteres en una cadena:

let text = "GATTACA"; let mut counts: HashMap<char, i32> = HashMap::new(); counts.insert(''A'', 0); counts.insert(''C'', 0); counts.insert(''G'', 0); counts.insert(''T'', 0); for c in text.chars() { match counts.get_mut(&c) { Some(x) => *x += 1, None => (), } }

¿Hay una forma más concisa o declarativa de inicializar un HashMap ? Por ejemplo en Python yo haría:

counts = { ''A'': 0, ''C'': 0, ''G'': 0, ''T'': 0 }

o

counts = { key: 0 for key in ''ACGT'' }