Online Rust Playground
pub struct Items {
minimum: i32,
step: i32,
maximum: i32,
}
impl Iterator for Items {
type Item = i32;
fn next(&mut self) -> Option<Self::Item> {
if self.minimum >= self.maximum {
return None;
}
let current = self.minimum;
self.minimum += self.step;
Some(current)
}
}
fn main() {
println!("-> Loops");
loops();
println!("-> Iterator");
iter();
}
//Loops
fn loops() {
println!("loop");
let mut n = 0;
loop {
n += 1; //step
if n > 5 {
break;
}
println!("{}", n);
}
println!("while");
let mut m = 0;
while m < 5 {
m += 1; //step
println!("{}", m)
}
println!("for - range");
for mut i in (0..5).step_by(2) {
i += 1;
println!("{}", i);
}
println!("for - idx");
for (idx, i) in (1..=5).enumerate().step_by(2) {
println!("{}: {}", idx, i);
}
println!("for - array");
let arr = [1, 2, 3];
for a in arr.iter().step_by(2) {
println!("{}", a);
}
}
//Iterator
fn iter() {
let mut it = Items {
minimum: 2,
step: 3,
maximum: 15,
};
println!("loop");
loop {
match it.next() {
Some(v) => println!("loop {}", v),
None => break,
}
}
println!("while");
it = Items {
minimum: 3,
step: 4,
maximum: 15,
};
while let Some(n) = it.next() {
println!("while {}", n)
}
println!("for");
it = Items {
minimum: 5,
step: 10,
maximum: 50,
};
for i in it {
println!("for {}", i);
}
}
Комментариев нет:
Отправить комментарий