diff --git a/src/functions.rs b/src/functions.rs index f628b52..9f339a3 100644 --- a/src/functions.rs +++ b/src/functions.rs @@ -63,6 +63,10 @@ fn create_fn() -> impl Fn() { // value; } +fn divergin_one() -> ! { + panic!("This will never return! PANIC"); +} + pub fn functions_module() { fizzbuzz(10); @@ -99,4 +103,15 @@ pub fn functions_module() { // Diverging functions // Never return, marked with: ! + // Useful on divergin situations where an exact type is required + for i in 0..5 { + let value: u32 = match i % 2 == 0 { + true => 5, + false => continue, + }; + println!("The value is pair and {value}"); + } + + // NOTE: Bad example since it's not really useful + divergin_one(); } diff --git a/src/main.rs b/src/main.rs index e92736a..2f42dd4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,8 +14,8 @@ // mod controlflow; // mod traits; // mod str_types; -// mod functions; -mod exercises; +mod functions; +// mod exercises; fn main() { // helloworld::hello_world_module(); @@ -27,6 +27,6 @@ fn main() { // controlflow::control_flow_module(); //traits::traits_exercise(); // str_types::str_types_module(); - // functions::functions_module(); - exercises::run_easy(); + functions::functions_module(); + // exercises::run_easy(); }