thrift-parser 0.0.5

A simple thrift parser.
Documentation
#[cfg(test)]
use nom::IResult;

#[cfg(test)]
#[allow(unused)]
pub fn assert_pair_eq<T>(input: IResult<&str, T>, expected: T)
where
    T: PartialEq + std::fmt::Debug,
{
    assert!(input.is_ok());
    assert_eq!(input.unwrap().1, expected);
}

#[cfg(test)]
#[allow(unused)]
pub fn assert_list_eq<'a, T, IR, IT>(input: IR, expected: IT)
where
    IR: IntoIterator<Item = IResult<&'a str, T>>,
    IT: IntoIterator<Item = T>,
    T: PartialEq + std::fmt::Debug,
{
    input
        .into_iter()
        .zip(expected.into_iter())
        .for_each(|(i, e)| assert_pair_eq(i, e))
}

#[cfg(test)]
#[allow(unused)]
pub fn assert_err<T>(input: IResult<&str, T>)
where
    T: PartialEq + std::fmt::Debug,
{
    assert!(input.is_err());
}

#[cfg(test)]
#[allow(unused)]
pub fn assert_list_err<'a, T, IR>(input: IR)
where
    IR: IntoIterator<Item = IResult<&'a str, T>>,
    T: PartialEq + std::fmt::Debug,
{
    input.into_iter().for_each(|i| assert_err(i));
}

#[cfg(test)]
#[allow(unused)]
pub fn assert_list_eq_with_f<'a, T, IS, ES, ISI, ESI, IF, EF>(
    input: IS,
    expected: ES,
    input_f: IF,
    expected_f: EF,
) where
    T: PartialEq + std::fmt::Debug,
    IS: IntoIterator<Item = ISI>,
    ES: IntoIterator<Item = ESI>,
    IF: Fn(ISI) -> IResult<&'a str, T>,
    EF: Fn(ESI) -> T,
{
    input
        .into_iter()
        .zip(expected.into_iter())
        .for_each(|(i, e)| assert_pair_eq(input_f(i), expected_f(e)))
}

#[cfg(test)]
#[allow(unused)]
pub fn assert_list_err_with_f<'a, T, IS, ISI, IF>(input: IS, input_f: IF)
where
    T: PartialEq + std::fmt::Debug,
    IS: IntoIterator<Item = ISI>,
    IF: Fn(ISI) -> IResult<&'a str, T>,
{
    input.into_iter().for_each(|i| assert_err(input_f(i)))
}