# 🎯 Definição
> [!Abstract] Definição
> **Cargo** é o sistema de compilação e gerenciador de pacotes oficial do [[Linguagem Rust|Rust]]. Ele automatiza tarefas complexas como baixar dependências (bibliotecas), compilar o código, gerar documentação e publicar pacotes no [crates.io](https://crates.io/).
# 📝 Notas
## 1. Principais Funções
O Cargo resolve três problemas principais:
- **Gerenciamento de Dependências:** Baixa e atualiza bibliotecas automaticamente.
- **Build System:** Compila o código fonte com as flags corretas para cada SO.
- **Padronização:** Garante que os comandos sejam os mesmos no Windows, macOS ou Linux.
## 2. Arquivos Fundamentais
Ao iniciar um projeto com Cargo, dois arquivos são essenciais:
- **`Cargo.toml`**: O "Manifesto". Contém metadados do projeto (nome, versão) e a lista de dependências que você escreve.
- **`Cargo.lock`**: Contém as versões exatas das dependências instaladas. É gerenciado pelo Cargo para garantir builds reproduzíveis.
## 3. Comandos Essenciais
| Comando | Descrição |
| :--- | :--- |
| `cargo new <nome>` | Cria um novo projeto em um diretório. |
| `cargo init` | Inicializa um projeto Cargo no diretório atual. |
| `cargo build` | Compila o projeto (gera binário em `target/debug`). |
| `cargo run` | Compila (se necessário) e executa o programa. |
| `cargo check` | Verifica erros de compilação sem gerar o binário (muito mais rápido). |
| `cargo test` | Executa os testes unitários e de integração. |
| `cargo doc --open` | Gera a documentação das dependências e a abre no navegador. |
> [!Tip] Build para Produção
> Use `cargo build --release` para compilar com otimizações de performance. O binário resultante será muito mais rápido, mas a compilação demorará mais.
## 4. Estrutura de Pastas Padrão
```text
meu_projeto/
├── Cargo.toml
├── Cargo.lock
├── src/
│ └── main.rs
└── target/ (Gerado após o build)
```
# 🔗 Conceitos relacionados
- [[Crates e Módulos]]
- [[Publicação no Crates.io]]
- [[Variáveis em Rust]]
# 📚 Referências
- [Introdução - The Cargo Book](https://doc.rust-lang.org/cargo/index.html)
- [Crates.io - Registro de Pacotes da Comunidade](https://crates.io/)