Fundamentos de Módulos
Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 8 de 61.
À medida que seus programas Rust crescem, manter tudo em um único arquivo torna-se complicado. O sistema de módulos do Rust permite que você organize o código movendo structs e suas implementações para arquivos separados.
Para criar um módulo em um arquivo separado, você simplesmente cria um novo arquivo com o nome do módulo desejado. Por exemplo, para criar um módulo player, você criaria um arquivo chamado player.rs:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Para usar este módulo em seu arquivo principal, você o declara com a palavra-chave mod. Isso diz ao Rust para procurar por um arquivo com esse nome:
// main.rs
mod player;
fn main() {
// Agora podemos acessar itens do módulo player
}
A declaração mod player; diz ao Rust para encontrar e incluir o conteúdo de player.rs. Pense nisso como vincular o código desse arquivo ao seu programa. O nome do módulo deve corresponder exatamente ao nome do arquivo (sem a extensão .rs).
Essa separação mantém o código relacionado unido — a definição da sua struct e todos os seus métodos residem em um arquivo dedicado, enquanto o main.rs permanece focado no ponto de entrada do programa. Na próxima lição, você aprenderá como acessar de fato os itens que colocou em módulos.
Folha de consulta
Para organizar o código em arquivos separados, crie um arquivo de módulo com o nome desejado. Por exemplo, player.rs:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Para usar o módulo em seu arquivo principal, declare-o com a palavra-chave mod:
// main.rs
mod player;
fn main() {
// O conteúdo do módulo agora está disponível
}
A declaração mod player; diz ao Rust para encontrar e incluir player.rs. O nome do módulo deve corresponder exatamente ao nome do arquivo (sem a extensão .rs).
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Object Oriented Programming
1Métodos e Comportamento
Introdução a Blocos de ImplementaçãoO Parâmetro SelfMétodos MutáveisFunções AssociadasMúltiplos Blocos de ImplementaçãoEncadeamento de MétodosRecapitulação - Ações de Retângulo4Projeto: Pet Virtual
Definindo o PetAlimentando o Pet7Traits Padrão
A Trait DebugA Trait DisplayClone e CopyTraits de IgualdadeRecapitulação - Ponto Imprimível10Projeto: Sistema de Documentos
A Trait DrawComponente de Texto2Encapsulamento e Módulos
Fundamentos de MódulosA Palavra-chave PublicCampos PrivadosGettersSettersRecapitulação - Cofre Seguro5Genéricos
Structs GenéricasMétodos GenéricosMúltiplos Tipos GenéricosFunções GenéricasRecapitulação - Ponto de Coordenada8Traits como Restrições
Sintaxe de Restrições de TraitRestrições MúltiplasA Cláusula WhereRetornando Tipos com TraitsRecapitulação - Impressora Genérica11Padrões de Projeto em Rust
Padrão NewtypeComposiçãoA Trait DropFrom e IntoRecapitulação - Mock de Smart Pointer3Enums Avançados
Enums com DadosMétodos em EnumsCorrespondência de Variantes de DadosO Enum Option RevisitadoRecapitulação - Enum Shape6Definição de Traits
O que é uma Trait?Implementando TraitsImplementações PadrãoSobrescrevendo PadrõesTraits com ParâmetrosRecapitulação - Media Player