statue 0.3.1

Easier way to query selectors for static HTML pages.
Documentation
use core::marker::PhantomData;
use proc_macro::{token_stream::IntoIter as TokenTreeIter, TokenTree};

use super::Parse;

pub(super) struct CommaSepedParser<T: Parse>(pub(super) PhantomData<*const T>);

impl<T: Parse> Parse for CommaSepedParser<T> {
    type Error = T::Error;
    type OkTy = T::OkTy;
    type Wrapper<O, E> = Option<T::Wrapper<O, E>>;

    fn parse(iter: &mut TokenTreeIter) -> Option<T::Wrapper<T::OkTy, T::Error>> {
        let Some(comma) = iter.next() else { return None };
        let TokenTree::Punct(comma) = comma else { return None };
        if !(comma.as_char() == ',') {
            return None;
        };
        Some(T::parse(iter))
    }
}