pub fn debug_string(self) -> String {
        let mut out = String::new();
        for Token { kind, span, source } in self {
            let Span { start: s, end: e, .. } = span;
            write!(out, "[{}:{}-{}:{}] ({:?}) {:?}\n",
                s.line, s.column, e.line, e.column, kind, source).unwrap();
        }
        out
    }
// This function is used for lexer tests, so if you change the format of it, you must change
// the format of all the lexer tests (in tests/lexer/*.out).
This function is used for lexer tests, so if you change the format of it, you must change
the format of all the lexer tests (in tests/lexer.out).
This function is used for lexer tests so if you change the format of it you must change the format of all the lexer tests ( in tests / lexer . out ) .
pub fn debug_string(self) -> String {
        let mut out = String::new();
        for Token { kind, span, source } in self {
            let Span { start: s, end: e, .. } = span;
            write!(out, "[{}:{}-{}:{}] ({:?}) {:?}\n",
                s.line, s.column, e.line, e.column, kind, source).unwrap();
        }
        out
    }
pub fn debug_string ( self ) -> String { let mut out = String :: new ( ) ; for Token { kind , span , source } in self { let Span { start : s , end : e , .. } = span ; write ! ( out " \n " s line s column e line e column kind source ) . unwrap ( ) ; } out }
This function is used for lexer tests, so if you change the format of it, you must change
the format of all the lexer tests (in tests/lexer/*.out).
This function is used for lexer tests so if you change the format of it you must change the format of all the lexer tests ( in tests / lexer / * . out ) .
self
self