mirror of
https://github.com/darkicewolf50/RustBrock.git
synced 2025-06-15 13:04:18 -06:00
finished ch7
This commit is contained in:
parent
fc4becb1a0
commit
40a722d93d
23
.obsidian/workspace.json
vendored
23
.obsidian/workspace.json
vendored
@ -34,9 +34,23 @@
|
|||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "Modules and Use"
|
"title": "Modules and Use"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b6a35c226bb40634",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Collection of Common Data Structs.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Collection of Common Data Structs"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 1
|
"currentTab": 2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
@ -178,15 +192,16 @@
|
|||||||
"command-palette:Open command palette": false
|
"command-palette:Open command palette": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "b80f5219fa24358f",
|
"active": "b6a35c226bb40634",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"Modules and Use.md",
|
||||||
|
"Collection of Common Data Structs.md",
|
||||||
"Packages.md",
|
"Packages.md",
|
||||||
|
"data_types.md",
|
||||||
"Crates.md",
|
"Crates.md",
|
||||||
"Project Organization.md",
|
"Project Organization.md",
|
||||||
"crates.io.md",
|
"crates.io.md",
|
||||||
"Modules and Use.md",
|
|
||||||
"Paths.md",
|
"Paths.md",
|
||||||
"data_types.md",
|
|
||||||
"does_not_compile.svg",
|
"does_not_compile.svg",
|
||||||
"Structures.md",
|
"Structures.md",
|
||||||
"Primitives.md",
|
"Primitives.md",
|
||||||
|
1
Collection of Common Data Structs.md
Normal file
1
Collection of Common Data Structs.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Collection of Common Data Structs
|
@ -220,3 +220,55 @@ This makes it harder to tell what names are used in scope and where a name in us
|
|||||||
This is often used when testing to bring everything under test into the tests module
|
This is often used when testing to bring everything under test into the tests module
|
||||||
|
|
||||||
This is also used as part of the prelude pattern
|
This is also used as part of the prelude pattern
|
||||||
|
|
||||||
|
|
||||||
|
## Modules In External Files
|
||||||
|
This works for both binary and library crates
|
||||||
|
|
||||||
|
leave only the mod definition in the crate root
|
||||||
|
```rust
|
||||||
|
mod example_mod;
|
||||||
|
```
|
||||||
|
|
||||||
|
then place the code that you want inside another file called example_mod.rs
|
||||||
|
```rust
|
||||||
|
pub mod inner_example_mod {
|
||||||
|
pub fn example_fn () {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
you only need to to load a file using a ``mod`` declaration once in your module tree
|
||||||
|
|
||||||
|
The compiler will know the file is part of the project because of the mod declaration
|
||||||
|
|
||||||
|
mod is no an "include" operation like in C/C++ or python
|
||||||
|
|
||||||
|
you can then separate inner_example_mod into its own file called inner_example.rs
|
||||||
|
```rust
|
||||||
|
pub fn example_fn () {}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Alternate File Patrhs
|
||||||
|
So far only use idiomatic file paths but you can also use older style of file paths. The compiler will also look for a module named front_of_house declared in the crate root, the compiler will look for the module’s code in:
|
||||||
|
|
||||||
|
- src/front_of_house.rs (what we covered)
|
||||||
|
- src/front_of_house/mod.rs (older style, still supported path)
|
||||||
|
-
|
||||||
|
For a module named ``inner_example_mod`` that is a submodule of ``front_of_house``, the compiler will look for the module’s code in:
|
||||||
|
|
||||||
|
- src/front_of_house/inner_example_mod.rs (what we covered)
|
||||||
|
- src/front_of_house/hosting/mod.rs (older style, still supported path)
|
||||||
|
|
||||||
|
If you mix both styles for the same module then you will get a compiler error
|
||||||
|
|
||||||
|
Using a mix of both styles for different modules is allowed but you will end up with many mod.rs files which can be confusing
|
||||||
|
|
||||||
|
No matter which style is used it will not change how the use path is setup
|
||||||
|
|
||||||
|
My preferred style:
|
||||||
|
|
||||||
|
- In the file _src/example_mod.rs_
|
||||||
|
- In the file _src/example_mod/mod.rs
|
||||||
|
- Only use if it makes sense
|
||||||
|
- In the file _src/example_mod/inner_example_mod.rs_
|
||||||
|
Loading…
x
Reference in New Issue
Block a user