syntax-rust 0.4.1

Provides highlighting for Rust code.
Documentation
use crate::Parser;
use dialect::HighlightGroup;

pub(super) fn parse_struct(p: &mut Parser) {
    assert!(p.at(&[crate::TokenKind::Struct]));
    p.eat(HighlightGroup::OtherKeyword);

    p.push(crate::TokenKind::TypeIdent, HighlightGroup::TyDef);
    p.push(crate::TokenKind::Semi, HighlightGroup::Terminator);
}

#[cfg(test)]
mod tests {
    use super::*;
    use dialect::HighlightedSpan;
    use pretty_assertions::assert_eq;

    #[test]
    fn parses_unit_struct() {
        let mut parser = Parser::new("struct T;");
        parse_struct(&mut parser);

        assert_eq!(
            parser.output,
            vec![
                HighlightedSpan {
                    range: 0..6,
                    group: HighlightGroup::OtherKeyword,
                },
                HighlightedSpan {
                    range: 7..8,
                    group: HighlightGroup::TyDef,
                },
                HighlightedSpan {
                    range: 8..9,
                    group: HighlightGroup::Terminator,
                },
            ],
        );
    }
}