Function satisfy

fn satisfy<F, I, Error: ParseError<I>>(predicate: F) -> impl Parser<I, Output = char, Error = Error>
where
    I: Input,
    <I as Input>::Item: AsChar,
    F: Fn(char) -> bool

Recognizes one character and checks that it satisfies a predicate

Example

# use nom::{Err, error::{ErrorKind, Error}, Needed, IResult};
# use nom::character::complete::satisfy;
fn parser(i: &str) -> IResult<&str, char> {
    satisfy(|c| c == 'a' || c == 'b')(i)
}
assert_eq!(parser("abc"), Ok(("bc", 'a')));
assert_eq!(parser("cd"), Err(Err::Error(Error::new("cd", ErrorKind::Satisfy))));
assert_eq!(parser(""), Err(Err::Error(Error::new("", ErrorKind::Satisfy))));