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.
rustc_do_not_const_checkrust#106541do_not_const_checkfromIteratormethods rust#132368My 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_checkonto 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_methodthat 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.