use std::collections::{HashMap, HashSet}; use itertools::Itertools; use enum_map::{Enum, EnumMap}; use crate::item::Item; use crate::character::Character; type Time = u64; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Var { index: u64 } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Value { Var(Var), Item(Item), Character(Character), Time(Time), } impl From for Value { fn from(x: Var) -> Self {Value::Var(x)} } impl From for Value { fn from(x: Item) -> Self {Value::Item(x)} } impl From for Value { fn from(x: Character) -> Self {Value::Character(x)} } impl From