Curso gratuito de Rust: A linguagem mais amada
Olá Mundo! e Gerenciamento de Projetos com Cargo
Aprenda sobre olá mundo! e gerenciamento de projetos com cargo
🚀 Olá Mundo! e Gerenciamento de Projetos com Cargo
Bem-vindo(a) à sua primeira aula prática no Curso gratuito de Rust: A linguagem mais amada! 🎉
Nesta aula, daremos os primeiros passos com Rust, criando o clássico programa "Olá Mundo!". Mais importante ainda, aprenderemos a utilizar o Cargo, a ferramenta essencial de gerenciamento de projetos e pacotes de Rust. O Cargo será seu melhor amigo ao longo de sua jornada com Rust, então preste bastante atenção!
🎯 Objetivos da Aula
Ao final desta aula, você será capaz de:
- Escrever e executar um programa "Olá Mundo!" em Rust.
- Compreender a estrutura básica de um programa Rust.
- Criar novos projetos Rust usando
cargo new. - Compilar e executar projetos Rust usando
cargo buildecargo run. - Entender o papel do arquivo
Cargo.toml. - Utilizar comandos básicos do
Cargopara gerenciar seu projeto.
Vamos começar! 🚀
1. 👋 Olá Mundo! em Rust
Todo programador começa com um "Olá Mundo!". Em Rust, isso não é diferente. É a maneira perfeita de verificar se sua instalação está funcionando e para se familiarizar com a sintaxe básica.
1.1. O Código Básico
O programa "Olá Mundo!" em Rust é surpreendentemente conciso.
Primeiro, vamos criar um arquivo chamado main.rs (a extensão .rs é para arquivos Rust).
// src/main.rs
fn main() {
println!("Olá, mundo!");
}1.2. Entendendo o Código
fn main(): Esta linha declara uma função chamadamain. A funçãomainé especial: ela é sempre a primeira a ser executada em qualquer programa Rust. Ofné a palavra-chave para "function" (função).{}: As chaves delimitam o corpo da função, ou seja, o código que será executado.println!: Esta é uma macro em Rust. Macros são como funções, mas com algumas diferenças sintáticas e capacidades mais poderosas. O!indica que estamos chamando uma macro, não uma função regular. A macroprintln!imprime texto na tela."Olá, mundo!": Esta é a string (texto) que queremos imprimir.;: Cada instrução em Rust termina com um ponto e vírgula.
1.3. Compilando e Executando (o jeito "manual")
Embora usaremos o Cargo na maior parte do tempo, é útil saber como compilar e executar um arquivo Rust diretamente.
-
Compile o arquivo: Abra seu terminal ou prompt de comando, navegue até o diretório onde você salvou
main.rse execute:rustc main.rsSe tudo correr bem, este comando não produzirá nenhuma saída, mas criará um arquivo executável no mesmo diretório (por exemplo,
mainno Linux/macOS oumain.exeno Windows). -
Execute o programa:
./main # No Linux/macOS .\main.exe # No WindowsVocê deverá ver a saída:
Olá, mundo!Parabéns! Você acabou de compilar e executar seu primeiro programa Rust! 🎉
2. 📦 Gerenciamento de Projetos com Cargo
Agora, vamos apresentar o Cargo, a ferramenta que tornará sua vida muito mais fácil ao trabalhar com Rust.
2.1. O Que é Cargo?
Cargo é o sistema de build e gerenciador de pacotes do Rust. Ele cuida de muitas tarefas para você:
- Criação de Projetos: Inicializa novos projetos Rust com uma estrutura padrão.
- Gerenciamento de Dependências: Baixa e compila as bibliotecas (crates) que seu projeto precisa.
- Compilação: Compila seu código Rust e suas dependências.
- Execução: Executa seu programa.
- Testes: Roda os testes do seu projeto.
- Documentação: Gera a documentação do seu código.
É a ferramenta central para a maioria dos desenvolvedores Rust. Se você instalou Rust usando rustup, o Cargo já está instalado!
2.2. Criando um Novo Projeto com Cargo
Em vez de criar arquivos manualmente, vamos usar o Cargo para iniciar um novo projeto.
-
Abra seu terminal e execute:
cargo new hello_cargoVocê verá uma saída similar a:
Created binary (application) `hello_cargo` packageEste comando criou um novo diretório chamado
hello_cargocom a estrutura básica de um projeto Rust. -
Explore a estrutura do projeto:
Navegue para o novo diretório:
cd hello_cargoE observe a estrutura:
hello_cargo/ ├── Cargo.toml └── src/ └── main.rsCargo.toml: Este é o arquivo de manifesto doCargo. Ele contém metadados sobre seu projeto (nome, versão, autores) e lista suas dependências.src/main.rs: Este é o arquivo onde seu código-fonte principal reside. OCargoespera que seus arquivos-fonte estejam dentro do diretóriosrc.
2.3. O Arquivo Cargo.toml
Abra o arquivo Cargo.toml dentro do seu projeto hello_cargo. Ele deve se parecer com isto:
# hello_cargo/Cargo.toml
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021" # Ou a edição mais recente
[dependencies][package]: Esta seção define metadados sobre seu pacote (crate).name: O nome do seu projeto.version: A versão atual do seu projeto.edition: A edição do Rust que seu projeto usa. As edições permitem que Rust evolua sem quebrar o código existente. A edição2021(ou a mais recente) é a padrão para novos projetos.
[dependencies]: Esta seção é onde você listaria quaisquer bibliotecas externas (crates) que seu projeto precise. Por enquanto, está vazia.
2.4. Compilando e Executando com Cargo
Agora, vamos usar o Cargo para compilar e executar o "Olá Mundo!" que ele gerou para nós.
-
Compile o projeto: Certifique-se de estar no diretório
hello_cargoe execute:cargo buildVocê verá uma saída detalhada, incluindo algo como:
Compiling hello_cargo v0.1.0 (~/hello_cargo) Finished dev [unoptimized + debuginfo] target(s) in 0.X.X.sEste comando compila seu projeto e suas dependências. O executável será colocado no diretório
target/debug/. -
Execute o projeto:
cargo runVocê verá:
Compiling hello_cargo v0.1.0 (~/hello_cargo) Finished dev [unoptimized + debuginfo] target(s) in 0.X.X.s Running `target/debug/hello_cargo` Olá, mundo!Perceba que
cargo runprimeiro compila (se houver mudanças) e depois executa. É a forma mais comum de testar seu programa durante o desenvolvimento.
2.5. Outros Comandos Úteis do Cargo
-
cargo check: Verifica seu código quanto a erros sem realmente compilar o executável. É muito mais rápido quecargo builde útil para feedback rápido.cargo check -
cargo build --release: Compila seu projeto com otimizações para produção. O executável resultante será mais rápido, mas a compilação levará mais tempo. O executável estará emtarget/release/.cargo build --release -
cargo doc: Gera a documentação HTML para seu projeto e suas dependências.cargo doc --open # Abre a documentação no seu navegador -
cargo test: Roda os testes do seu projeto. (Veremos isso em aulas futuras!)
📝 Exercícios/Desafios Práticos
É hora de colocar a mão na massa! Use o que você aprendeu para completar os desafios abaixo.
Desafio 1: Modificar o "Olá Mundo!" ✍️
Altere o programa "Olá Mundo!" para imprimir uma mensagem diferente.
- Navegue até o diretório
hello_cargo. - Abra o arquivo
src/main.rs. - Modifique a string dentro de
println!paraOlá, Rustacean!. - Salve o arquivo.
- Execute o programa usando
cargo run. - Verifique se a nova mensagem é exibida.
Desafio 2: Criar um Segundo Projeto 🌱
Crie um novo projeto com o Cargo e adicione uma linha de código extra.
- No seu terminal, volte um diretório (
cd ..) para não estar dentro dehello_cargo. - Crie um novo projeto chamado
meu_primeiro_appusandocargo new. - Navegue para o diretório
meu_primeiro_app. - Abra
src/main.rs. - Adicione uma segunda linha
println!para imprimir seu nome, por exemplo:println!("Meu nome é [Seu Nome]!");. - Salve o arquivo.
- Execute o projeto usando
cargo run. - Verifique se ambas as mensagens são exibidas.
Desafio 3: Explorar Comandos Cargo 🔍
Use diferentes comandos do Cargo para entender seus efeitos.
- No diretório
meu_primeiro_app, executecargo check. Observe a velocidade em comparação comcargo run. - Execute
cargo build --release. - Navegue até o diretório
target/release. - Execute o executável diretamente (por exemplo,
./meu_primeiro_appou.\meu_primeiro_app.exe). - Compare o tamanho do arquivo executável em
target/debugcom o detarget/release. (O release geralmente é menor e otimizado).
Desafio 4: Adicionar uma Função Simples ➕
Vamos introduzir uma função muito simples para ver como Rust organiza o código.
-
No projeto
meu_primeiro_app, abrasrc/main.rs. -
Crie uma nova função abaixo de
mainque apenas imprime uma mensagem.// src/main.rs fn main() { println!("Olá, mundo!"); println!("Meu nome é [Seu Nome]!"); saudacao_personalizada(); // Chamando a nova função } fn saudacao_personalizada() { println!("Seja bem-vindo(a) ao mundo Rust!"); } -
Chame a nova função dentro de
main(). -
Salve o arquivo.
-
Execute o projeto com
cargo run. -
Verifique se a mensagem da nova função é exibida.
📝 Resumo e Próximos Passos
Parabéns por completar sua primeira aula prática em Rust! Você deu um grande passo.
Nesta aula, aprendemos a:
- Escrever e executar um programa "Olá Mundo!" em Rust.
- Entender a sintaxe básica de uma função
maine a macroprintln!. - Utilizar o
Cargopara criar, compilar e executar projetos Rust. - Explorar a estrutura de um projeto
Cargoe o arquivoCargo.toml. - Dominar comandos essenciais do
Cargocomonew,build,run,checkebuild --release.
O Cargo é uma ferramenta poderosa e você a usará constantemente. Acostume-se com ela!
Na próxima aula, mergulharemos mais fundo nos fundamentos da linguagem, explorando Variáveis e Tipos de Dados. Prepare-se para aprender como Rust lida com informações!
Até a próxima aula! 👋