pub mod relation; pub use relation::*; use crate::time::*; use crate::item::*; use crate::character::*; use std::collections::{HashMap, HashSet}; use itertools::Itertools; use enum_map::EnumMap; use strum::IntoDiscriminant; #[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