2022-03-02 07:48:25 -06:00
|
|
|
|
1.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let n = 5;
|
|
|
|
|
|
|
|
|
|
if n < 0 {
|
|
|
|
|
println!("{} is negative", n);
|
|
|
|
|
} else if n > 0 {
|
|
|
|
|
println!("{} is positive", n);
|
|
|
|
|
} else {
|
|
|
|
|
println!("{} is zero", n);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let n = 5;
|
|
|
|
|
|
|
|
|
|
let big_n =
|
|
|
|
|
if n < 10 && n > -10 {
|
|
|
|
|
println!(", and is a small number, increase ten-fold");
|
|
|
|
|
|
|
|
|
|
10 * n
|
|
|
|
|
} else {
|
|
|
|
|
println!(", and is a big number, halve the number");
|
|
|
|
|
|
|
|
|
|
n / 2
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
println!("{} -> {}", n, big_n);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
for n in 1..100 {
|
|
|
|
|
if n == 100 {
|
|
|
|
|
panic!("NEVER LET THIS RUN")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let names = [String::from("liming"),String::from("hanmeimei")];
|
|
|
|
|
for name in &names {
|
|
|
|
|
// do something with name...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
println!("{:?}", names);
|
|
|
|
|
|
|
|
|
|
let numbers = [1, 2, 3];
|
|
|
|
|
// the elements in numbers are Copyļ¼so there is no move here
|
|
|
|
|
for n in numbers {
|
|
|
|
|
// do something with name...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
println!("{:?}", numbers);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let a = [4, 3, 2, 1];
|
|
|
|
|
|
|
|
|
|
// iterate the indexing and value in 'a'
|
|
|
|
|
for (i,v) in a.iter().enumerate() {
|
|
|
|
|
println!("The {}th element is {}",i+1,v);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
6.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
// A counter variable
|
|
|
|
|
let mut n = 1;
|
|
|
|
|
|
|
|
|
|
// Loop while the condition is true
|
|
|
|
|
while n < 10 {
|
|
|
|
|
if n % 15 == 0 {
|
|
|
|
|
println!("fizzbuzz");
|
|
|
|
|
} else if n % 3 == 0 {
|
|
|
|
|
println!("fizz");
|
|
|
|
|
} else if n % 5 == 0 {
|
|
|
|
|
println!("buzz");
|
|
|
|
|
} else {
|
|
|
|
|
println!("{}", n);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n += 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
println!("n reached {}, soloop is over",n);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
7.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let mut n = 0;
|
|
|
|
|
for i in 0..=100 {
|
|
|
|
|
if n == 66 {
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
n += 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assert_eq!(n, 66);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
8.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let mut n = 0;
|
|
|
|
|
for i in 0..=100 {
|
|
|
|
|
if n != 66 {
|
|
|
|
|
n+=1;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assert_eq!(n, 66);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
9.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let mut count = 0u32;
|
|
|
|
|
|
|
|
|
|
println!("Let's count until infinity!");
|
|
|
|
|
|
|
|
|
|
// Infinite loop
|
|
|
|
|
loop {
|
|
|
|
|
count += 1;
|
|
|
|
|
|
|
|
|
|
if count == 3 {
|
|
|
|
|
println!("three");
|
|
|
|
|
|
|
|
|
|
// Skip the rest of this iteration
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
println!("{}", count);
|
|
|
|
|
|
|
|
|
|
if count == 5 {
|
|
|
|
|
println!("OK, that's enough");
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assert_eq!(count, 5);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
10.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let mut counter = 0;
|
|
|
|
|
|
|
|
|
|
let result = loop {
|
|
|
|
|
counter += 1;
|
|
|
|
|
|
|
|
|
|
if counter == 10 {
|
|
|
|
|
break counter * 2;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
assert_eq!(result, 20);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
11.
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
let mut count = 0;
|
|
|
|
|
'outer: loop {
|
|
|
|
|
'inner1: loop {
|
|
|
|
|
if count >= 20 {
|
|
|
|
|
// This would break only the inner1 loop
|
|
|
|
|
break 'inner1; // `break` is also ok
|
|
|
|
|
}
|
|
|
|
|
count += 2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
count += 5;
|
|
|
|
|
|
|
|
|
|
'inner2: loop {
|
|
|
|
|
if count >= 30 {
|
|
|
|
|
// This breaks the outer loop
|
|
|
|
|
break 'outer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// This will continue the outer loop
|
|
|
|
|
continue 'outer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
assert!(count == 30)
|
|
|
|
|
}
|
|
|
|
|
```
|