- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.9k
Closed
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Code
use std::collections::HashSet;
use std::hash::Hash;
use num_traits::Bounded;
fn for_each_value_with_skip<T>(skipped: &HashSet<T>, func: impl Fn(T))
where
    T: Bounded + Hash + Eq,
{
    for v in T::min_value()..T::max_value() {
        if skipped.contains(&v) {
            continue;
        }
        func(v);
    }
}Current output
error[E0277]: the trait bound `T: Step` is not satisfied
  --> s7-comm/src/tests/helpers.rs:11:14
   |
11 |     for v in T::min_value()..T::max_value() {
   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Step` is not implemented for `T`, which is required by `std::ops::Range<T>: IntoIterator`
   |
   = note: required for `std::ops::Range<T>` to implement `Iterator`
   = note: required for `std::ops::Range<T>` to implement `IntoIterator`
help: consider further restricting this bound
   |
9  |     T: Bounded + Hash + Eq + std::iter::Step,
   |                            +++++++++++++++++
Desired output
No idea what the alternative is, if it's even possible to achieve what I want using stable Rust, but a stable compiler should not suggest using unstable features.
Rationale and extra context
No response
Other cases
Rust Version
$ rustc --version
rustc 1.82.0 (f6e511eec 2024-10-15)Anything else?
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.