use std::collections::HashMap;
use uuid::Uuid;
pub enum Functions<A, E> {
ADD((Uuid, A)),
EDIT((Uuid, E)),
REMOVE(Uuid),
}
pub fn handler<T, U>(hashmap: &mut HashMap<Uuid, T>, fnc: Functions<T, U>)
where
T: RodoStruct<U>,
{
match fnc {
Functions::ADD(data) => {
hashmap.insert(data.0, data.1);
}
Functions::EDIT(data) => {
if let Some(v) = hashmap.get_mut(&data.0) {
v.edit(data.1)
}
}
Functions::REMOVE(id) => {
hashmap.remove(&id);
}
};
}
pub fn edit_vecs(field: &mut Vec<Uuid>, id: Uuid) {
if field.contains(&id) {
field.retain(|i| *i != id);
} else {
field.push(id);
}
}
pub trait RodoStruct<F> {
fn edit(&mut self, fields: F);
}