diff options
| author | Hunter Kvalevog <hunter@kvog.sh> | 2026-09-14 17:15:13 -0500 |
|---|---|---|
| committer | Hunter Kvalevog <hunter@kvog.sh> | 2026-09-14 17:28:26 -0500 |
| commit | bf66df1a16461ef1ee50510803a3097914ffcb82 (patch) | |
| tree | 15a13e34a794ec182c1e4c4507645ac43e07c6bc /rustlings/exercises/10_modules | |
| parent | b6245506460bd854ab32b1b6d2ecc51f5be82ef9 (diff) | |
Add rustlings
Diffstat (limited to 'rustlings/exercises/10_modules')
| -rw-r--r-- | rustlings/exercises/10_modules/README.md | 7 | ||||
| -rw-r--r-- | rustlings/exercises/10_modules/modules1.rs | 16 | ||||
| -rw-r--r-- | rustlings/exercises/10_modules/modules2.rs | 26 | ||||
| -rw-r--r-- | rustlings/exercises/10_modules/modules3.rs | 13 |
4 files changed, 62 insertions, 0 deletions
diff --git a/rustlings/exercises/10_modules/README.md b/rustlings/exercises/10_modules/README.md new file mode 100644 index 0000000..3dc8a48 --- /dev/null +++ b/rustlings/exercises/10_modules/README.md @@ -0,0 +1,7 @@ +# Modules + +In this section we'll give you an introduction to Rust's module system. + +## Further information + +- [The Module System](https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html) diff --git a/rustlings/exercises/10_modules/modules1.rs b/rustlings/exercises/10_modules/modules1.rs new file mode 100644 index 0000000..d97ab23 --- /dev/null +++ b/rustlings/exercises/10_modules/modules1.rs @@ -0,0 +1,16 @@ +// TODO: Fix the compiler error about calling a private function. +mod sausage_factory { + // Don't let anybody outside of this module see this! + fn get_secret_recipe() -> String { + String::from("Ginger") + } + + fn make_sausage() { + get_secret_recipe(); + println!("sausage!"); + } +} + +fn main() { + sausage_factory::make_sausage(); +} diff --git a/rustlings/exercises/10_modules/modules2.rs b/rustlings/exercises/10_modules/modules2.rs new file mode 100644 index 0000000..782a70e --- /dev/null +++ b/rustlings/exercises/10_modules/modules2.rs @@ -0,0 +1,26 @@ +// You can bring module paths into scopes and provide new names for them with +// the `use` and `as` keywords. + +mod delicious_snacks { + // TODO: Add the following two `use` statements after fixing them. + // use self::fruits::PEAR as ???; + // use self::veggies::CUCUMBER as ???; + + mod fruits { + pub const PEAR: &str = "Pear"; + pub const APPLE: &str = "Apple"; + } + + mod veggies { + pub const CUCUMBER: &str = "Cucumber"; + pub const CARROT: &str = "Carrot"; + } +} + +fn main() { + println!( + "favorite snacks: {} and {}", + delicious_snacks::fruit, + delicious_snacks::veggie, + ); +} diff --git a/rustlings/exercises/10_modules/modules3.rs b/rustlings/exercises/10_modules/modules3.rs new file mode 100644 index 0000000..691608d --- /dev/null +++ b/rustlings/exercises/10_modules/modules3.rs @@ -0,0 +1,13 @@ +// You can use the `use` keyword to bring module paths from modules from +// anywhere and especially from the standard library into your scope. + +// TODO: Bring `SystemTime` and `UNIX_EPOCH` from the `std::time` module into +// your scope. Bonus style points if you can do it with one line! +// use ???; + +fn main() { + match SystemTime::now().duration_since(UNIX_EPOCH) { + Ok(n) => println!("1970-01-01 00:00:00 UTC was {} seconds ago!", n.as_secs()), + Err(_) => panic!("SystemTime before UNIX EPOCH!"), + } +} |