p-arse 0.0.1

the inelegant parser
use std::iter::FromIterator;

use p_arse::{CharExt, Parser};

fn main() {
    let print_letter = |letter| {
        println!("Rule:     letter");

        letter
    };
    let print_digit = |digit| {
        println!("Rule:     digit");

        digit
    };
    let print_ident = |cs| {
        println!("Rule:     ident");
    };
    let print_text = |text: &str| {
        println!("Text:     {}", text);
    };

    let alpha = ('a'.to('z'))
        .or('A'.to('Z'))
        .map(print_letter)
        .maps(print_text);
    let digit = '0'.to('9').map(print_digit).maps(print_text);
    let ident = alpha.or(digit).more().map(print_ident).maps(print_text);
    let ident_list = (digit.not_ahead(), ident, (" ", ident).more());

    let _ = ident_list.p_arse("a1 b2").unwrap();
}