1
0
mirror of https://github.com/rust-lang/rustlings.git synced 2025-07-11 01:10:33 +02:00
Files
.github
.vscode
exercises
clippy
conversions
enums
error_handling
functions
generics
hashmaps
if
intro
lifetimes
macros
modules
move_semantics
options
README.md
options1.rs
options2.rs
options3.rs
primitive_types
smart_pointers
standard_library_types
strings
structs
tests
threads
traits
variables
vecs
README.md
quiz1.rs
quiz2.rs
quiz3.rs
src
tests
.all-contributorsrc
.editorconfig
.gitignore
.gitpod.yml
.replit
AUTHORS.md
CHANGELOG.md
CONTRIBUTING.md
Cargo.lock
Cargo.toml
LICENSE
README.md
flake.lock
flake.nix
info.toml
install.ps1
install.sh
shell.nix
rustlings/exercises/options/options2.rs

37 lines
965 B
Rust
Raw Normal View History

2022-07-14 17:34:50 +02:00
// options2.rs
2022-07-14 17:53:42 +02:00
// Execute `rustlings hint options2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn simple_option() {
let target = "rustlings";
let optional_target = Some(target);
// TODO: Make this an if let statement whose value is "Some" type
word = optional_target {
assert_eq!(word, target);
}
}
#[test]
fn layered_option() {
let mut range = 10;
let mut optional_integers: Vec<Option<i8>> = Vec::new();
for i in 0..(range + 1) {
optional_integers.push(Some(i));
}
// 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
integer = optional_integers.pop() {
assert_eq!(integer, range);
range -= 1;
}
}
}