bluejay-parser 0.3.1

A GraphQL parser
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use crate::ast::{DepthLimiter, FromTokens, ParseError, Tokens, TryFromTokens};

pub trait IsMatch<'a> {
    fn is_match(tokens: &mut impl Tokens<'a>) -> bool;
}

impl<'a, T: FromTokens<'a> + IsMatch<'a>> TryFromTokens<'a> for T {
    fn try_from_tokens(
        tokens: &mut impl Tokens<'a>,
        depth_limiter: DepthLimiter,
    ) -> Option<Result<Self, ParseError>> {
        Self::is_match(tokens).then(|| Self::from_tokens(tokens, depth_limiter))
    }
}