Function chomp::parsers::run_scanner [] [src]

pub fn run_scanner<I: Input, S: Copy, F>(
    i: I,
    s: S,
    f: F
) -> SimpleResult<I, (I::Buffer, S)> where
    F: FnMut(S, I::Token) -> Option<S>, 

Like scan but generalized to return the final state of the scanner.

use chomp::prelude::{parse_only, run_scanner};

let p = |i| run_scanner(i, 0, |s, c| match (s, c) {
    (b'*', b'/') => None,
    (_,    c)    => Some(c),
});

assert_eq!(parse_only(p, b"/*test*of*scan*/ foo"), Ok((&b"/*test*of*scan*"[..], b'*')));