Add option solutions
This commit is contained in:
parent
50c322d8c9
commit
dd88abf3d8
exercises/option
|
@ -1,23 +1,19 @@
|
||||||
// option1.rs
|
// option1.rs
|
||||||
// Make me compile! Execute `rustlings hint option1` for hints
|
// Make me compile! Execute `rustlings hint option1` for hints
|
||||||
|
|
||||||
// I AM NOT DONE
|
|
||||||
|
|
||||||
// you can modify anything EXCEPT for this function's sig
|
// you can modify anything EXCEPT for this function's sig
|
||||||
fn print_number(maybe_number: Option<u16>) {
|
fn print_number(maybe_number: Option<u16>) {
|
||||||
println!("printing: {}", maybe_number.unwrap());
|
println!("printing: {}", maybe_number.unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
print_number(13);
|
print_number(Some(13));
|
||||||
print_number(99);
|
print_number(Some(99));
|
||||||
|
|
||||||
let mut numbers: [Option<u16>; 5];
|
let mut numbers = [None; 5];
|
||||||
for iter in 0..5 {
|
for iter in 0..5 {
|
||||||
let number_to_add: u16 = {
|
let number_to_add: u16 = { ((iter * 1235) + 2) / (4 * 16) };
|
||||||
((iter * 1235) + 2) / (4 * 16)
|
|
||||||
};
|
|
||||||
|
|
||||||
numbers[iter as usize] = number_to_add;
|
numbers[iter as usize] = Some(number_to_add);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
// option2.rs
|
// option2.rs
|
||||||
// Make me compile! Execute `rustlings hint option2` for hints
|
// Make me compile! Execute `rustlings hint option2` for hints
|
||||||
|
|
||||||
// I AM NOT DONE
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let optional_value = Some(String::from("rustlings"));
|
let optional_value = Some(String::from("rustlings"));
|
||||||
// TODO: Make this an if let statement whose value is "Some" type
|
if let Some(value) = optional_value {
|
||||||
value = optional_value {
|
|
||||||
println!("the value of optional value is: {}", value);
|
println!("the value of optional value is: {}", value);
|
||||||
} else {
|
} else {
|
||||||
println!("The optional value doesn't contain anything!");
|
println!("The optional value doesn't contain anything!");
|
||||||
|
@ -19,7 +16,7 @@ fn main() {
|
||||||
|
|
||||||
// TODO: make this a while let statement - remember that vector.pop also adds another layer of Option<T>
|
// TODO: make this a while let statement - remember that vector.pop also adds another layer of Option<T>
|
||||||
// You can stack `Option<T>`'s into while let and if let
|
// You can stack `Option<T>`'s into while let and if let
|
||||||
value = optional_values_vec.pop() {
|
while let Some(Some(value)) = optional_values_vec.pop() {
|
||||||
println!("current value: {}", value);
|
println!("current value: {}", value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue