use crate::ids::{EnvironmentId, Lag, VariableId};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum NodeRef {
Static(VariableId),
Lagged {
variable: VariableId,
lag: Lag,
},
Context {
variable: VariableId,
environment: Option<EnvironmentId>,
},
}
impl NodeRef {
#[must_use]
pub const fn variable(self) -> VariableId {
match self {
Self::Static(v)
| Self::Lagged { variable: v, .. }
| Self::Context { variable: v, .. } => v,
}
}
#[must_use]
pub const fn lag(self) -> Option<Lag> {
match self {
Self::Lagged { lag, .. } => Some(lag),
Self::Static(_) | Self::Context { .. } => None,
}
}
}