0Pricing
Learn Rust Coding · Lekcja

Moduły i mod

Porządkowanie kodu

Moduły i mod to bezpłatna lekcja Learn Rust Coding na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn Rust Coding, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.

Dlaczego moduły?

Wraz z rozrostem programów umieszczanie wszystkiego w jednym pliku staje się nieporęczne. Moduły pozwalają grupować powiązany kod, kontrolować jego publiczną dostępność i unikać konfliktów nazw.

Słowo kluczowe mod deklaruje moduł.

Deklarowanie modułu w pliku

Moduł można zdefiniować bezpośrednio w pliku za pomocą mod name { ... }. Wszystko między klamrami należy do tego modułu.

mod greetings {
    fn hello() {
        println!("hello from the module");
    }
}

fn main() {
    println!("module declared above");
}

Wywoływanie funkcji modułu

Elementy modułu są domyślnie prywatne. Aby wywołać element z zewnątrz, musi on być oznaczony jako pub, a odwołanie do niego wymaga ścieżki modułu z użyciem ::.

mod greetings {
    pub fn hello() {
        println!("hello!");
    }
}

fn main() {
    greetings::hello();
}

Moduły zagnieżdżone

Moduły mogą zawierać inne moduły, tworząc drzewo. Ścieżka wymienia każdy poziom, oddzielając je za pomocą ::.

mod app {
    pub mod ui {
        pub fn draw() {
            println!("drawing ui");
        }
    }
}

fn main() {
    app::ui::draw();
}

Moduły grupują nie tylko funkcje

Moduł może zawierać funkcje, struktury, wyliczenia, stałe, a nawet inne moduły. Dzięki temu powiązane typy i zachowania pozostają razem.

mod shapes {
    pub struct Circle {
        pub radius: f64,
    }
    pub const PI: f64 = 3.14159;
}

fn main() {
    let c = shapes::Circle { radius: 2.0 };
    println!("area = {}", shapes::PI * c.radius * c.radius);
}

Drzewo modułów

Każdy crate ma moduł główny. Deklarowane moduły tworzą pod nim drzewo. Ścieżki opisują położenie elementu, podobnie jak foldery w systemie plików.

super: moduł nadrzędny

Wewnątrz modułu super odnosi się do modułu nadrzędnego. Pozwala modułowi potomnemu wywołać coś zdefiniowanego poziom wyżej.

fn top_level() {
    println!("called via super");
}

mod inner {
    pub fn run() {
        super::top_level();
    }
}

fn main() {
    inner::run();
}

self: bieżący moduł

self odnosi się do bieżącego modułu. Używa się go głównie po to, aby jawnie wskazać położenie elementu w ścieżce.

mod tools {
    pub fn helper() {
        println!("helper running");
    }
    pub fn run() {
        self::helper();
    }
}

fn main() {
    tools::run();
}

Moduły w osobnych plikach

Oprócz modułów umieszczonych bezpośrednio w pliku zapis mod network; (ze średnikiem i bez treści) informuje Rust, aby wczytał zawartość z network.rs lub network/mod.rs.

W ten sposób rzeczywiste projekty dzielą kod na pliki, zachowując jedno drzewo modułów.

Granice prywatności

Moduły wyznaczają granice prywatności. Moduł potomny może uzyskiwać dostęp do prywatnych elementów przodków, ale moduły nadrzędne nie mogą sięgać do prywatnych elementów modułu potomnego.

Ta enkapsulacja ukrywa szczegóły wewnętrznej implementacji.

mod bank {
    fn secret() -> i32 { 42 }
    pub fn reveal() -> i32 { secret() }
}

fn main() {
    println!("{}", bank::reveal());
}

Organizowanie rzeczywistych projektów

Używaj modułów, aby odzwierciedlały dziedzinę projektu: auth, db, handlers. Niech każdy moduł ma jasno określony zakres, niewielki publiczny interfejs, a pozostałe elementy pozostają ukryte.

Wyraźne granice modułów ułatwiają poruszanie się po dużych bazach kodu.

Szybkie sprawdzenie

Sprawdź swoją wiedzę o modułach.

Podsumowanie

Nauczył(a) się Pan/Pani porządkować kod za pomocą modułów:

  • mod name { ... } deklaruje moduł wbudowany
  • Elementy są domyślnie prywatne; użyj pub, aby je udostępnić
  • Ścieżki używają :: do poruszania się po drzewie modułów
  • super, self i mod name; służą do nawigowania po modułach i dzielenia ich na części

Często zadawane pytania

Czy lekcja „Moduły i mod” jest bezpłatna?

Tak — pełny tekst „Moduły i mod” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn Rust Coding, przejdź na CoddyKit PRO. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.

Co nauczysz się w „Moduły i mod”?

Porządkowanie kodu Ćwiczysz Learn Rust Coding z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn Rust Coding?

Nie wymagamy żadnego doświadczenia. Learn Rust Coding w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Moduły i mod”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn Rust Coding?

Tak. Każda lekcja Learn Rust Coding zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Moduły i mod
  2. pub i widoczność
  3. use i ścieżki
  4. Crate'y i główny moduł crate'a
← Powrót do Learn Rust Coding