pub mod expr;
pub mod group;
pub mod parse_chain;
pub use parse_chain::ParseChain;
pub trait Chain
where
Self: Sized,
{
type Member: Sized;
type Identifier: Sized;
fn new(id: impl Into<Option<Self::Identifier>>, members: &[Self::Member]) -> Self;
fn append_member(&mut self, member: Self::Member) -> usize;
fn remove_member(&mut self, idx: usize) -> Option<Self::Member>;
fn members(&self) -> &[Self::Member];
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn set_id(&mut self, id: impl Into<Option<Self::Identifier>>) -> &mut Self;
fn id(&self) -> Option<&Self::Identifier>;
}