use crate::ast::{Alias, Ast, NodeId, Tuple};
use proc_macro2::Span;
use std::rc::Rc;
#[derive(Debug, Clone)]
pub enum LoopAlias {
Simple(Rc<Alias>),
Tuple(Tuple<Alias>),
}
impl LoopAlias {
pub fn from_simple(alias: Alias) -> Self {
Self::Simple(Rc::new(alias))
}
pub fn from_tuple(tuple: Tuple<Alias>) -> Self {
Self::Tuple(tuple)
}
}
impl Ast for LoopAlias {
fn id(&self) -> NodeId {
match self {
LoopAlias::Simple(alias) => alias.id(),
LoopAlias::Tuple(tuple) => tuple.id(),
}
}
fn span(&self) -> Span {
match self {
LoopAlias::Simple(alias) => alias.span(),
LoopAlias::Tuple(tuple) => tuple.span(),
}
}
}