syn
syn copied to clipboard
Consider whether const generics supersedes the `Token!` macro
Something like:
pub struct Token<const A: char, const B: char = '\0', const C: char = '\0'>;
Then you'd use Token<'+'>
for what used to be Token![+]
, and Token<'+', '='>
instead of Token![+=]
, etc.
The custom_punctuation!
macro (https://docs.rs/syn/1.0.105/syn/macro.custom_punctuation.html) would no longer be necessary because you could instantiate a Token
with any arbitrary punctuation without needing to give it a name.
Another possibility: the approach from https://docs.rs/monostate/0.1.1/monostate/index.html.
See #1209. The use of type macros like Token!
in a generic data structure prevents derive
from being used.
Tracking issue: https://github.com/rust-lang/rust/issues/95174