0Pricing
Learn Rust Coding · Aula

Módulos e mod

Organize o código

Módulos e mod é uma aula grátis de Learn Rust Coding no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn Rust Coding, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn Rust Coding inclui 4 aulas no total.

Por que usar módulos?

À medida que os programas crescem, colocar tudo em um único arquivo fica confuso. Os módulos permitem agrupar código relacionado, controlar o que é público e evitar conflitos de nomes.

A palavra-chave mod declara um módulo.

Declarando um módulo embutido

Você pode definir um módulo diretamente dentro de um arquivo com mod name { ... }. Tudo o que estiver entre as chaves pertencerá a esse módulo.

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

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

Chamando funções de módulos

Os itens dentro de um módulo são privados por padrão. Para chamar um deles de fora, ele precisa ser pub, e você deve referenciá-lo usando o caminho do módulo com ::.

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

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

Módulos aninhados

Os módulos podem conter outros módulos, formando uma árvore. O caminho lista cada nível separado por ::.

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

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

Módulos agrupam mais do que funções

Um módulo pode conter funções, estruturas, enumerações, constantes e até outros módulos. Isso mantém tipos e comportamentos relacionados juntos.

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);
}

A árvore de módulos

Todo crate tem um módulo raiz. Os módulos que você declara formam uma árvore abaixo dele. Os caminhos descrevem onde um item está localizado, de modo semelhante às pastas em um sistema de arquivos.

super: o módulo pai

Dentro de um módulo, super se refere ao módulo pai. Ele permite que um módulo filho chame algo definido um nível acima.

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

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

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

self: o módulo atual

self se refere ao módulo atual. Ele é usado principalmente para deixar explícito onde um item está localizado dentro de um caminho.

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

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

Módulos em arquivos separados

Além dos módulos embutidos, mod network; (com ponto e vírgula e sem corpo) informa ao Rust que carregue o conteúdo de network.rs ou network/mod.rs.

É assim que projetos reais dividem o código entre arquivos, mantendo uma única árvore de módulos.

Limites de privacidade

Os módulos formam limites de privacidade. Um módulo filho pode ver os itens privados de seus ancestrais, mas os pais não podem acessar os itens privados de um filho.

Esse encapsulamento mantém os detalhes internos ocultos.

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

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

Organizando projetos reais

Use módulos para refletir seu domínio: auth, db, handlers. Mantenha cada um focado, exponha uma pequena superfície pública e oculte o restante.

Limites claros entre módulos tornam grandes bases de código mais fáceis de navegar.

Verificação rápida

Teste seus conhecimentos sobre módulos.

Recapitulação

Você aprendeu a organizar código com módulos:

  • mod name { ... } declara um módulo embutido
  • Os itens são privados por padrão; use pub para expô-los
  • Os caminhos usam :: para percorrer a árvore de módulos
  • super, self e mod name; permitem navegar e dividir módulos

Perguntas Frequentes

A aula “Módulos e mod” é grátis?

Sim — o texto completo de “Módulos e mod” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn Rust Coding, atualize para CoddyKit PRO. O curso de Learn Rust Coding inclui 4 aulas no total.

O que vou aprender em “Módulos e mod”?

Organize o código Você pratica Learn Rust Coding com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Learn Rust Coding?

Nenhuma experiência prévia é necessária. Learn Rust Coding no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Módulos e mod”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Learn Rust Coding?

Sim. Cada aula de Learn Rust Coding inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Módulos e mod
  2. pub e visibilidade
  3. use e caminhos
  4. Crates e raiz do crate
← Voltar para Learn Rust Coding