Skip to content

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

Open
@compiler-errors

Description

@compiler-errors

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions