mirror of
https://github.com/darkicewolf50/RustBrock.git
synced 2025-07-06 02:57:13 -06:00
got through a good portion of loops
This commit is contained in:
7
loops/Cargo.lock
generated
Normal file
7
loops/Cargo.lock
generated
Normal file
@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "loops"
|
||||
version = "0.1.0"
|
6
loops/Cargo.toml
Normal file
6
loops/Cargo.toml
Normal file
@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "loops"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
80
loops/src/main.rs
Normal file
80
loops/src/main.rs
Normal file
@ -0,0 +1,80 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
looping_through_a_list();
|
||||
}
|
||||
|
||||
// rust has 3 types of loops: loop, while and for
|
||||
|
||||
// This will not stop until interrupted unless told by a return, break or a ctrl-c
|
||||
fn forever_loop () {
|
||||
loop {
|
||||
println!("another loop!")
|
||||
}
|
||||
|
||||
let mut counter = 0;
|
||||
let value_from_loop = loop {
|
||||
counter += 1;
|
||||
if counter == 4 {
|
||||
break counter;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// continue
|
||||
// this will start the loop over again from the top regardless of the code after it
|
||||
// break, can return values from a loop, needs a ; after break to do that
|
||||
|
||||
// one use of a loop is checking weather a thread is finished or do a operation that you know might fail
|
||||
|
||||
fn loop_with_labels () {
|
||||
let mut counter = 0;
|
||||
let result = 'first_loop: loop {
|
||||
println!("counter = {counter}");
|
||||
let mut remaining = 10;
|
||||
'inner_loop: loop {
|
||||
println!("remaining = {remaining}");
|
||||
if remaining == 9 {
|
||||
// both acceptable
|
||||
break 'inner_loop;
|
||||
// continue 'inner_loop;
|
||||
}
|
||||
if counter == 2 {
|
||||
// returns a value and goes out of the outermost loop called/labelled first_loop
|
||||
break 'first_loop counter*2;
|
||||
}
|
||||
remaining -= 1;
|
||||
}
|
||||
counter += 1;
|
||||
};
|
||||
println!("counter = {counter}");
|
||||
println!("result = {result}");
|
||||
}
|
||||
|
||||
fn looping_with_while () {
|
||||
let mut count_down = 3;
|
||||
println!("liftoff in {count_down} seconds");
|
||||
|
||||
while count_down != 0 {
|
||||
println!("{}!", count_down);
|
||||
|
||||
count_down -= 1;
|
||||
}
|
||||
|
||||
println!("Lift-Off!");
|
||||
|
||||
}
|
||||
|
||||
// while will only run when the condition/bool is true otherwise it will call a break of the loop by itself
|
||||
// removes a lot of the nesting of if, else, and break statements in loops
|
||||
|
||||
fn looping_through_a_list () {
|
||||
let a = [32, 5, 20, 40, 50, 60];
|
||||
let mut index = 0;
|
||||
// if a.len was a static number this would/could cause the program to panic
|
||||
// because if a was modified and the static number was not then it would attempt to go out out the assigned memory
|
||||
// using list.len() is always a better solution
|
||||
while index < a.len() {
|
||||
println!("the value is: {}", a[index]);
|
||||
index += 1;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user