Механізм организації коду в Rust. Контролюють видимість (публічна/приватна).
mod math {
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
fn multiply(a: i32, b: i32) -> i32 { // приватна
a * b
}
}
fn main() {
println!("{}", math::add(2, 3)); // OK
// println!("{}", math::multiply(2, 3)); // ERROR
}
pub: видимо зовні модулю. Без pub - приватна.
pub struct Config {
pub name: String, // публічне поле
private_key: String, // приватне поле
}
impl Config {
pub fn new(name: String) -> Self {
Config { name, private_key: String::new() }
}
pub fn get_key(&self) -> &str {
&self.private_key
}
}
use std::collections::HashMap;
use crate::math::add; // з власного крейта
use super::config::Config; // з батьківського модулю
let mut map = HashMap::new();
let result = add(2, 3);
// main.rs
mod math; // підвантажує math.rs
use math::add;
fn main() {
println!("{}", add(2, 3));
}
// math.rs
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
Лекція 19: Traits і Generics
Дякую за увагу! 💾