</body>
</html>";
+#[derive(Debug, PartialEq, Eq, Hash)]
+struct Entry {
+ col: String,
+ instance: String,
+}
+impl From<&str> for Entry {
+ fn from(value: &str) -> Entry {
+ Entry {
+ col: String::from(value),
+ instance: String::from(""),
+ }
+ }
+}
+
#[derive(Debug, PartialEq, Eq)]
struct RowInput {
label: String,
- entries: Vec<String>,
+ entries: Vec<Entry>,
}
struct Reader<Input: Iterator<Item = Result<String, std::io::Error>>> {
n + 1
))))
}
- Some(ref mut row) => row.entries.push(String::from(line.trim())),
+ Some(ref mut row) => row.entries.push(Entry::from(line.trim())),
},
Some((_, Ok(line))) => {
let prev = std::mem::take(&mut self.row);
.iter()
.flat_map(|r| r.entries.iter().collect::<HashSet<_>>().into_iter())
.fold(HashMap::new(), |mut cs, e| {
- cs.entry(String::from(e))
+ cs.entry(String::from(&e.col))
.and_modify(|n| *n += 1)
.or_insert(1);
cs
read_rows(&b"foo\n bar\n"[..]).flatten().collect::<Vec<_>>(),
vec![RowInput {
label: String::from("foo"),
- entries: vec![String::from("bar")]
+ entries: vec![Entry::from("bar")]
}]
);
assert_eq!(
.collect::<Vec<_>>(),
vec![RowInput {
label: String::from("foo"),
- entries: vec![String::from("bar"), String::from("baz")]
+ entries: vec![Entry::from("bar"), Entry::from("baz")]
}]
);
assert_eq!(
.collect::<Vec<_>>(),
vec![RowInput {
label: String::from("foo"),
- entries: vec![String::from("bar")]
+ entries: vec![Entry::from("bar")]
}]
);