I'm trying to filter a vector of enums by an associated value :
In my case, the enum is Item, which got 2 cases:
Gcontaining aGroupstruct,- and
Scontaining aMetaSegmentstruct.
I want to filter a Vec of Item's by G to get a Vec of Group's. In short: from Vec<Item> I want Vec<Group>. I got this error : no field 0 on type &&Item (I tried putting * and **).
Am I doing something wrong ?
Rust playground : https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=fd87bb6e80396d055653c438e894f41a
The code for reference :
#[derive(Debug, PartialEq, Eq)]
enum Item {
G(Group),
S(MetaSegment)
}
#[derive(Debug, PartialEq, Eq)]
struct Group {}
#[derive(Debug, PartialEq, Eq)]
struct MetaSegment {}
fn main() {
let mut stuff = Vec::<Item>::new();
stuff.push(Item::G(Group{}));
stuff.push(Item::S(MetaSegment{}));
stuff.push(Item::G(Group{}));
stuff
.iter()
.filter(|e| matches!(e.0, Item::G(_)))
.for_each(|e| println!("'{:#?}'", e));
}