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

Constifying large traits in libstd (i.e. Iterator) #15

Open
compiler-errors opened this issue Oct 31, 2024 · 0 comments
Open

Constifying large traits in libstd (i.e. Iterator) #15

compiler-errors opened this issue Oct 31, 2024 · 0 comments

Comments

@compiler-errors
Copy link
Member

My understanding is that constifying iterator currently required constifying all of its extension methods. That was a lot of work.

Instead, we just slapped rustc_do_not_const_check onto all the methods, somewhat leaving us vulnerable to CTFE errors "post-mono" if any of the combinators ended up doing anything non-const.

Instead of doing this, we probably could introduce something like rustc_non_const_trait_method that forces a specific method to be non-const in a const trait.

This means we don't need to work towards constifying all of the combinators all at once. Then when we constify iterator, we can initially slap #[rustc_non_const_trait_method] on every combinator, and slowly work to peel them off until the trait is fully constified.

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

No branches or pull requests

1 participant