snippetrustModerate
How do you make a range in Rust?
Viewed 0 times
youhowrustrangemake
Problem
The documentation doesn't say how and the tutorial completely ignores for loops.
Solution
As of 1.0, for loops work with values of types with the
The book describes this technique in chapter 3.5 and chapter 13.2.
If you are interested in how for loops operate, see the described syntactic sugar in Module std::iter.
Example:
(Playground)
If you just want to iterate over a range of numbers, as in C's for loops, you can create a numeric range with the
If you need both, the index and the element from an array, the idiomatic way to get that is with the
Notes:
-
The loop items are borrowed references to the iteratee elements. In this case, the elements of
Iterator trait.The book describes this technique in chapter 3.5 and chapter 13.2.
If you are interested in how for loops operate, see the described syntactic sugar in Module std::iter.
Example:
fn main() {
let strs = ["red", "green", "blue"];
for sptr in strs.iter() {
println!("{}", sptr);
}
}
(Playground)
If you just want to iterate over a range of numbers, as in C's for loops, you can create a numeric range with the
a..b syntax:for i in 0..3 {
println!("{}", i);
}
If you need both, the index and the element from an array, the idiomatic way to get that is with the
Iterator::enumerate method:fn main() {
let strs = ["red", "green", "blue"];
for (i, s) in strs.iter().enumerate() {
println!("String #{} is {}", i, s);
}
}
Notes:
-
The loop items are borrowed references to the iteratee elements. In this case, the elements of
strs have type &'static str - they are borrowed pointers to static strings. This means sptr has type &&'static str, so we dereference it as *sptr. An alternative form which I prefer is:for &s in strs.iter() {
println!("{}", s);
}Code Snippets
for &s in strs.iter() {
println!("{}", s);
}Context
Stack Overflow Q#9271970, score: 47
Revisions (0)
No revisions yet.