PRINT-BANG INPUT (DISPLAY): struct M($crate :: S) ; PRINT-BANG INPUT (DEBUG): TokenStream [ Ident { ident: "struct", span: #3 bytes(LO..HI), }, Ident { ident: "M", span: #3 bytes(LO..HI), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", span: #3 bytes(LO..HI), }, Punct { ch: ':', spacing: Joint, span: #3 bytes(LO..HI), }, Punct { ch: ':', spacing: Alone, span: #3 bytes(LO..HI), }, Ident { ident: "S", span: #3 bytes(LO..HI), }, ], span: #3 bytes(LO..HI), }, Punct { ch: ';', spacing: Alone, span: #3 bytes(LO..HI), }, ] PRINT-ATTR INPUT (DISPLAY): struct A(crate::S); PRINT-ATTR RE-COLLECTED (DISPLAY): struct A($crate :: S) ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "struct", span: #3 bytes(LO..HI), }, Ident { ident: "A", span: #3 bytes(LO..HI), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", span: #3 bytes(LO..HI), }, Punct { ch: ':', spacing: Joint, span: #3 bytes(LO..HI), }, Punct { ch: ':', spacing: Alone, span: #3 bytes(LO..HI), }, Ident { ident: "S", span: #3 bytes(LO..HI), }, ], span: #3 bytes(LO..HI), }, Punct { ch: ';', spacing: Alone, span: #3 bytes(LO..HI), }, ]