ez_input 0.1.0

make rust input easy!
Documentation
// tests/test.rs
#[cfg(test)]
mod tests {
    use std::io::Cursor;
    use ez_input::{inputln, Scanner, ScannerExt, ReadNext};

    #[test]
    fn test_scanner_basic() {
        let data = "42 3.14 hello";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        let i: i32 = sc.next();
        let f: f64 = sc.next();
        let s: String = sc.next();

        assert_eq!(i, 42);
        assert_eq!(f, 3.14);
        assert_eq!(s, "hello");
    }

    #[test]
    fn test_scanner_multiline() {
        let data = "3 5\n1 2 3 4 5\n6 7 8 9 10\n11 12 13 14 15\n";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        let rows: i32 = sc.next();
        let cols: i32 = sc.next();

        assert_eq!(rows, 3);
        assert_eq!(cols, 5);

        // 读取矩阵
        let matrix: Vec<Vec<i32>> = (0..rows)
            .map(|_| (0..cols).map(|_| sc.next()).collect())
            .collect();

        assert_eq!(matrix[0][0], 1);
        assert_eq!(matrix[0][4], 5);
        assert_eq!(matrix[2][4], 15);
    }

    #[test]
    fn test_scanner_ext() {
        let data = "1 2 3 4 5";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        let vec: Vec<i32> = sc.next_vec(5);
        assert_eq!(vec, vec![1, 2, 3, 4, 5]);
    }

    #[test]
    fn test_read_next() {
        let data = "42 100 3.14";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        assert_eq!(sc.next_i32(), 42);
        assert_eq!(sc.next_usize(), 100);
        assert_eq!(sc.next_f64(), 3.14);
    }

    #[test]
    fn test_has_next() {
        let data = "1 2";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        assert!(sc.has_next());
        let _: i32 = sc.next();
        assert!(sc.has_next());
        let _: i32 = sc.next();
        assert!(!sc.has_next());
    }

    #[test]
    fn test_iterator() {
        let data = "1 2 3 4 5";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        let sum: i32 = sc.iter::<i32>().sum();
        assert_eq!(sum, 15);
    }

    #[test]
    fn test_next_line() {
        let data = "hello\nworld\n";
        let cursor = Cursor::new(data);
        let mut sc = Scanner::new(cursor);

        assert_eq!(sc.next_line(), "hello");
        assert_eq!(sc.next_line(), "world");
    }
}