use command::{IrcCommand, IrcCommandLine, Numeric, Stringy}; use std::io; use std::io::prelude::*; use std::ops::Range; pub struct SimpleIrcCommand { command: Vec, arguments: (Vec>, Vec), source: Vec, } impl IrcCommandLine for SimpleIrcCommand { fn get_command<'a>(&'a self) -> IrcCommand<'a> { IrcCommand::new(&self.command) } fn get_argument<'a>(&'a self, arg: usize) -> &'a [u8] { &self.arguments.1[self.arguments.0[arg].clone()] // awful API there, rust. } fn get_argument_count(&self) -> usize { self.arguments.0.len() } fn get_source<'a>(&'a self) -> &'a [u8] { &self.source } } pub struct NoIrcConnection; impl NoIrcConnection { pub fn read_command(reader: R) -> io::Result { unimplemented!() } }