use std::cell::RefCell; use std::rc::Rc; pub enum ParseResult { Parsed, Help, Exit, Error(String), } pub enum Action<'a> { Flag(Box), Single(Box), Push(Box), Many(Box), } pub trait TypedAction { fn bind<'x>(&self, Rc>) -> Action<'x>; } pub trait IFlagAction { fn parse_flag(&self) -> ParseResult; } pub trait IArgAction { fn parse_arg(&self, arg: &str) -> ParseResult; } pub trait IArgsAction { fn parse_args(&self, args: &[&str]) -> ParseResult; }