ЛЕКЦІЯ 18

Модули и организация кода

Рецензія: Колекции

План

  • Модулі та файли
  • pub для видимості
  • use для імпортів

Модулі

Модулі

Механізм организації коду в 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: видимо зовні модулю. Без 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 для імпортів

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
}

Запитання 1

Як зробити функцію видимою?

  • pub fn
  • export fn
  • global fn
✅ Правильна відповідь: pub fn

Запитання 2

Що зробить use std::collections::HashMap?

  • Імпортує HashMap в scope
  • Завантажує весь std
  • Помилка
✅ Правильна відповідь: Імпортує HashMap в scope

Помилка: Забув pub

⚠️ ЗАСТЕРЕЖЕННЯ

❌ Неправильно

✓ Правильно

Підсумки

  • Модулі организовують код
  • pub контролює видимість
  • use імпортує в scope
  • Файлова структура паралельна модульній

Далі

Наступна лекція:

Лекція 19: Traits і Generics

Дякую за увагу! 💾

← Повернутися до списку лекцій