Rust modules: Difference between revisions
From wikinotes
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Modules are rust libraries.<br> | Modules are rust libraries.<br> | ||
The <code>std::prelude</code> module is included in the scope of every program. | The <code>std::prelude</code> module is included in the scope of every program. | ||
= Entrypoint = | |||
<blockquote> | |||
For modules to be compiled, they must be used (however indirectly)<br> | |||
from either your crate's <code>main.rs</code> or <code>lib.rs</code>. | |||
</blockquote><!-- Entrypoint --> | |||
= Naming/Paths = | = Naming/Paths = |
Revision as of 01:50, 8 February 2023
Modules are rust libraries.
The std::prelude
module is included in the scope of every program.
Entrypoint
For modules to be compiled, they must be used (however indirectly)
from either your crate'smain.rs
orlib.rs
.
Naming/Paths
Module names govern where they can be found within the filesystem.
Module locations are based on where they are defined# from the rust book: backyard ├── Cargo.lock ├── Cargo.toml └── src ├── garden │ └── vegetables.rs ├── garden.rs └── main.rsThe module
foo
's code could be
src/foo.rs
src/foo/mod.rs
Imports
use std::io; // merges objects from namespace into your own use std::fs::File; // merge 'File' only into current namespace std::io::stdin() // you also can access objects from their namespace
Access Control
By default, a module's code is public to itself and it's children,
but private to it's parents and/or callers.pub mod house { pub mod livingroom { // ... } mod bedroom { // ... } }