69 lines
1.1 KiB
Markdown
69 lines
1.1 KiB
Markdown
# Module (access control).
|
|
|
|
# Create module.
|
|
|
|
## Separate file.
|
|
|
|
`src/garden.rs`
|
|
|
|
## Separate dir.
|
|
|
|
`src/garden/mod.rs`
|
|
|
|
## Inline / Access control.
|
|
|
|
Everything is private by default. Use keyword `pub` to make something public.
|
|
|
|
```rust
|
|
mod sausage_factory {
|
|
fn get_secret_sauce() -> String {
|
|
String::from("Ginger")
|
|
}
|
|
|
|
pub fn make_sausage() {
|
|
get_secret_sauce();
|
|
println!("sausage!");
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
sausage_factory::make_sausage();
|
|
}
|
|
```
|
|
|
|
# Access module.
|
|
|
|
Use `use` and `as` keywords.
|
|
|
|
```rust
|
|
use std::io;
|
|
use std::io as IO;
|
|
use std::io::{self, Write};
|
|
use std::collections::*;
|
|
```
|
|
|
|
```rust
|
|
mod delicious_snacks {
|
|
pub use self::fruits::PEAR as fruit;
|
|
pub use self::veggies::CUCUMBER as veggie;
|
|
|
|
mod fruits {
|
|
pub const PEAR: &'static str = "Pear";
|
|
pub const APPLE: &'static str = "Apple";
|
|
}
|
|
|
|
mod veggies {
|
|
pub const CUCUMBER: &'static str = "Cucumber";
|
|
pub const CARROT: &'static str = "Carrot";
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
println!(
|
|
"favorite snacks: {} and {}",
|
|
delicious_snacks::fruit,
|
|
delicious_snacks::veggie
|
|
);
|
|
}
|
|
```
|