css_parse 0.0.21-canary.c7360308b8

A recursive-descent CSS parser with generic cursor sinks and rich diagnostics.
Documentation
use crate::{Cursor, KindSet, Parse, Parser, Result};
use bumpalo::collections::Vec;

pub trait PreludeList<'a>: Sized + Parse<'a> {
	type PreludeItem: Parse<'a>;
	const STOP_TOKENS: KindSet = KindSet::LEFT_CURLY_OR_SEMICOLON;

	fn parse_prelude_list<I>(p: &mut Parser<'a, I>) -> Result<Vec<'a, Self::PreludeItem>>
	where
		I: Iterator<Item = Cursor> + Clone,
	{
		let mut items = Vec::new_in(p.bump());
		loop {
			items.push(p.parse::<Self::PreludeItem>()?);
			if p.peek_n(1) == Self::STOP_TOKENS {
				return Ok(items);
			}
		}
	}
}