io::read_number! [] [src]

macro_rules! read_number {
    () => ({
        match {
            read_character!()
        } {
            Some(45) => Some(-read_number!(0i8)),
            Some(d @ 48...57) => Some(read_number!(d - 48i8)),
            _ => None ,
        }
    });
    ($start: expr) => ({
        extern crate io;
        read_number!($start, io::ffi::BUFF_READ_NUMBER)
    });
    ($start: expr, $limit: expr) => ({
        fn result (
            acc: i64,
            lim: usize
        ) -> i64 {
            match {
                (read_character!(), lim)
            } {
                (Some(d @ 48...57), lim) if lim != 0 => result (
                    {acc * 10i64} + {d - 48i8} as i64,
                    lim - 1
                ),
                _ => acc,
            }
        }
        result($start as i64, $limit)
    });
}

The read_number macro reads and returns the number.