Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Eq and Hash for GreenTokenData #174

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

hurryabit
Copy link
Contributor

GreenToken implements all traits required to use it as the key type of a hash map. It also implements Borrow<GreenTokenData>. Thus is would be nice if GreenTokenData also implemented Eq and Hash such that the result of SyntaxToken::green could be used for lookups in such a hash map without additional overhead in terms of syntax or runtime.

`GreenToken` implements all traits required to use it as the key
type of a hash map. It also implements `Borrow<GreenTokenData>`.
Thus is would be nice if `GreenTokenData` also implements `Eq` and
`Hash` such that the result of `SyntaxToken::green` can be used for
lookups in such a hash map without additional overhead in terms of
sytntax and runtime.
@matklad
Copy link
Member

matklad commented Nov 7, 2024

Consider if you might want to intern GreenTokens&Nodes, and use pointer-equality and identity instead of content hashing

@hurryabit
Copy link
Contributor Author

Thanks for your quick response.

That's basically what I'm doing. I'm still prototyping and wanted to use the GreenTokens as the keys of my interning table instead of putting an interner into the lexer.

I just realised that the GreenNodeBuilder already does interning but it's unclear to me how to leverage that for a lookup table with the current API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants