Я ищу строку, которая чаще всего встречается во второй части кортежа Vec<(String, Vec<String>)>
:
use itertools::Itertools; // 0.8.0
fn main() {
let edges: Vec<(String, Vec<String>)> = vec![];
let x = edges
.iter()
.flat_map(|x| &x.1)
.map(|x| &x[..])
.sorted()
.group_by(|x| x)
.max_by_key(|x| x.len());
}
Playground
Это:
- принимает итератор
- плоские карты во вторую часть кортежа
- превращает элементы в
&str
- сортирует его (через itertools)
- группирует ее по строке (через itertools)
- находит группу с наибольшим количеством
Это, предположительно, дает мне группу с наиболее часто встречающимсястрока, за исключением того, что она не компилируется:
error[E0599]: no method named `max_by_key` found for type `itertools::groupbylazy::GroupBy<&&str, std::vec::IntoIter<&str>, [closure@src/lib.rs:9:19: 9:24]>` in the current scope
--> src/lib.rs:10:10
|
10 | .max_by_key(|x| x.len());
| ^^^^^^^^^^
|
= note: the method `max_by_key` exists but the following trait bounds were not satisfied:
`&mut itertools::groupbylazy::GroupBy<&&str, std::vec::IntoIter<&str>, [closure@src/lib.rs:9:19: 9:24]> : std::iter::Iterator`
Я полностью потерян в этих типах.