ephemeris_forge_github/live/
actions.rs1use std::mem::discriminant;
2
3use crate::operation::actions::{Group, GroupType};
4
5#[derive(Clone, Debug, Default, Eq, PartialEq)]
8pub struct Actions {
9 groups: Vec<Group>,
10}
11
12impl Actions {
13 #[must_use]
15 pub fn get<G: GroupType>(&self) -> Option<&G> {
16 self.groups.iter().find_map(G::pick)
17 }
18
19 pub fn set<G: Into<Group>>(&mut self, group: G) {
21 let group = group.into();
22 self.groups
23 .retain(|known| discriminant(known) != discriminant(&group));
24 self.groups.push(group);
25 }
26}