1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
pub const TYPE_ONLY_PREFIX: &str = "/type "; pub const QUIT_COMMAND: &str = "/quit"; pub const HELP_COMMAND: &str = "/help"; pub enum ParsedCommand { EvalValue(String), EvalType(String), Quit, Other, } pub fn parse_command(mut line: String) -> ParsedCommand { match line.as_ref() { _ if line.starts_with(TYPE_ONLY_PREFIX) => { line.drain(0..TYPE_ONLY_PREFIX.len()); ParsedCommand::EvalType(line) } HELP_COMMAND => { println!("Available REPL commands:"); println!(); println!("/help Prints this summary"); println!("/type <expression> Evaluates the type of the given expression"); println!("/quit Exits the REPL"); ParsedCommand::Other } QUIT_COMMAND => ParsedCommand::Quit, _ => ParsedCommand::EvalValue(line), } }