I am learning leetcode use rustlang, I tried this code:
pub fn group_anagrams1(strs: Vec<String>) -> Vec<Vec<String>> {
let mut result: Vec<Vec<String>> = vec![];
let mut m = std::collections::HashMap::new();
for s in strs {
let mut cs: Vec<u8> = s.clone().into_bytes().to_vec();
cs.sort();
let key = String::from_utf8(cs).unwrap();
if m.contains_key(&key) {
let &v = m.get(&key).unwrap();
let tmp = &mut result[v];
tmp.push(s);
} else {
m.insert(key, result.len());
result.push(vec![s]);
}
}
result
}
this happened:
18 | let tmp = &mut result[v];
| --- consider giving `tmp` the explicit type `&mut _`, with the type parameters specified
19 | tmp.push(s);
| ^^^^ cannot infer type
pub fn group_anagrams1(strs: Vec<String>) -> Vec<Vec<String>> {
let mut result: Vec<Vec<String>> = vec![];
let mut m = std::collections::HashMap::new();
for s in strs {
let mut cs: Vec<u8> = s.clone().into_bytes().to_vec();
cs.sort();
let key = String::from_utf8(cs).unwrap();
let index_ref = m.entry(key).or_insert_with(|| {
let i = result.len();
result.push(Vec::new());
i
});
result[*index_ref].push(s);
}
result
}