From ad81fe77135cc97f9e0fe852754b0ba0d11008fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Przytu=C5=82a?= Date: Thu, 17 Oct 2024 15:34:42 +0200 Subject: [PATCH 1/2] scenario 03: add module system slides --- .../module_system/module_system.html | 272 ++++++++++++++++++ .../module_system/module_system.md | 121 ++++++++ .../module_system/module_system.pdf | Bin 0 -> 43810 bytes 3 files changed, 393 insertions(+) create mode 100644 content/lessons/03_data_types/module_system/module_system.html create mode 100644 content/lessons/03_data_types/module_system/module_system.md create mode 100644 content/lessons/03_data_types/module_system/module_system.pdf diff --git a/content/lessons/03_data_types/module_system/module_system.html b/content/lessons/03_data_types/module_system/module_system.html new file mode 100644 index 0000000..d615dd1 --- /dev/null +++ b/content/lessons/03_data_types/module_system/module_system.html @@ -0,0 +1,272 @@ +
+

Module system

+

Managing code structure in a growing project.
+Testing and sharing code conveniently.

+
+
+

Module system consists of:

+
    +
  • Packages: A Cargo feature that lets you build, test, and share crates
  • +
  • Crates: A tree of modules that produces a library or executable
  • +
  • Modules and use: Let you control the organization, scope, and privacy of paths
  • +
  • Paths: A way of naming an item, such as a struct, function, or module
  • +
+
+
+

Package structure

+
my-project
+├── Cargo.lock             <-- actual dependencies' versions
+├── Cargo.toml             <-- package configuration, dependency version requirements
+└── src
+    ├── configuration
+    │   ├── run.rs
+    │   └── mod.rs
+    ├── lib.rs             <-- root of the lib crate
+    ├── bin1
+    │   ├── distribution.rs
+    │   └── main.rs        <-- root of bin crate `bin1`
+    └── bin2.rs            <-- root of bin crate `bin2`
+
+
+
+

Lib crates can be shared

+
    +
  • crates.io is the main crate repository.
  • +
  • If you specify a dependency in Cargo.toml, it's fetched from crates.io automatically by Cargo.
  • +
  • lib.rs is the root of a lib crate.
  • +
+
+
+

Binary crates can be executed

+
    +
  • cargo run executes the bin crate in your package.
  • +
  • If you have multiple bin crates, you have to specify which to run:
    +cargo run --bin <bin_name>
  • +
  • Each bin crate in a package can import code from the lib crate there.
  • +
+
+
+ +
mod front_of_house {
+    mod hosting {
+        fn add_to_waitlist() {}
+        fn seat_at_table() {}
+    }
+    
+    // Alternatively, this could be located in `serving.rs` file and imported.
+    mod serving {
+        fn take_order() {}
+        fn serve_order() {}
+        fn take_payment() {}
+    }
+}
+
+
+
+ +
crate
+ └── front_of_house
+     ├── hosting
+     │   ├── add_to_waitlist
+     │   └── seat_at_table
+     └── serving
+         ├── take_order
+         ├── serve_order
+         └── take_payment
+
+
+
+

Exports & imports

+
    +
  • exports: using privacy modifier (pub, pub(crate), )
  • +
+
mod some_mod {
+    struct ModulePublic;
+    pub(super) struct ParentModulePublic;
+    pub(crate) struct CratePublic;
+    pub struct WorldPublic;
+}
+
+
    +
  • imports: using use statement
  • +
+
use some_mod::CratePublic;
+pub use some_mod::WorldPublic; // <-- re-export
+
+
+
+
\ No newline at end of file diff --git a/content/lessons/03_data_types/module_system/module_system.md b/content/lessons/03_data_types/module_system/module_system.md new file mode 100644 index 0000000..e5541a2 --- /dev/null +++ b/content/lessons/03_data_types/module_system/module_system.md @@ -0,0 +1,121 @@ +--- +marp: true +author: Wojciech Przytuła +backgroundColor: black +color: grey +transition: fade +theme: gaia +style: | + pre { + background-color: black; + border-style: solid; + border-color: grey; + }, + + code { + background-color: black; + } +--- + +# Module system + +Managing code structure in a growing project. +Testing and sharing code conveniently. + +--- + +## Module system consists of: + +- **Packages**: A Cargo feature that lets you build, test, and share crates +- **Crates**: A tree of modules that produces a library or executable +- **Modules and `use`**: Let you control the organization, scope, and privacy of paths +- **Paths**: A way of naming an item, such as a struct, function, or module + +--- + +## Package structure + +``` +my-project +├── Cargo.lock <-- actual dependencies' versions +├── Cargo.toml <-- package configuration, dependency version requirements +└── src + ├── configuration + │ ├── run.rs + │ └── mod.rs + ├── lib.rs <-- root of the lib crate + ├── bin1 + │ ├── distribution.rs + │ └── main.rs <-- root of bin crate `bin1` + └── bin2.rs <-- root of bin crate `bin2` +``` + +--- + +## *Lib crates* can be shared + +- *crates.io* is the main crate repository. +- If you specify a dependency in `Cargo.toml`, it's fetched from `crates.io` automatically by *Cargo*. +- `lib.rs` is the root of a *lib crate*. + +--- + +## *Binary crates* can be executed + +- `cargo run` executes the bin crate in your package. +- If you have multiple bin crates, you have to specify which to run: +`cargo run --bin ` +- Each bin crate in a package can import code from the lib crate there. + +--- + +## Modules: grouping related code (& encapsulation) +```rust +mod front_of_house { + mod hosting { + fn add_to_waitlist() {} + fn seat_at_table() {} + } + + // Alternatively, this could be located in `serving.rs` file and imported. + mod serving { + fn take_order() {} + fn serve_order() {} + fn take_payment() {} + } +} +``` + +--- +## Modules: grouping related code (& encapsulation) + +``` +crate + └── front_of_house + ├── hosting + │ ├── add_to_waitlist + │ └── seat_at_table + └── serving + ├── take_order + ├── serve_order + └── take_payment +``` + +--- + +## Exports & imports + +- exports: using privacy modifier (`pub`, `pub(crate)`, ) +```rust +mod some_mod { + struct ModulePublic; + pub(super) struct ParentModulePublic; + pub(crate) struct CratePublic; + pub struct WorldPublic; +} +``` +- imports: using `use` statement +```rust +use some_mod::CratePublic; +pub use some_mod::WorldPublic; // <-- re-export +``` \ No newline at end of file diff --git a/content/lessons/03_data_types/module_system/module_system.pdf b/content/lessons/03_data_types/module_system/module_system.pdf new file mode 100644 index 0000000000000000000000000000000000000000..da222e772e85cba29b73e0e82a4f6a2c76952a1e GIT binary patch literal 43810 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 iB9}>6!U-w Date: Fri, 18 Oct 2024 20:13:50 +0200 Subject: [PATCH 2/2] 03: new link to assignment 2 --- content/lessons/03_data_types/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lessons/03_data_types/index.md b/content/lessons/03_data_types/index.md index d928a52..219b1cc 100644 --- a/content/lessons/03_data_types/index.md +++ b/content/lessons/03_data_types/index.md @@ -107,6 +107,6 @@ So how do we handle situations which can fail? That's where the `Result` type co ## Assignment 2 (graded) -[Communications](https://classroom.github.com/a/K_w_zJJ9) +[Communications](https://classroom.github.com/a/gDraT0lo) Deadline: 23.10.2024 23:59 \ No newline at end of file