I\'m new to Rust and observed something that I couldn\'t reason against.
When I write
fn main() {
(\'a\'..\'z\').all(|_| true);
}
The method all()
is a method of the Iterator
trait, so you can only call it on types that implement that trait. The type Range
does not implement the Iterator
trait, since a range of Unicode characters is not well-defined in the general case. The set of valid Unicode code points has gaps, and building a range of code points is not in general considered useful. The type Range
on the other does implement Iterator
, since iterating over a range of bytes has a well-defined meaning.
More generally, the error message tells you that Rust has found a method with the correct name, but that method does not apply to the type you call it for.