Por que Rust não é apenas uma linguagem da moda, mas um cavalo de batalha?
\n\nRust já é reconhecido há vários anos consecutivos como a linguagem de programação mais amada, segundo o Stack Overflow. Mas por trás do amor da comunidade, existe um ecossistema poderoso — as bibliotecas Rust, que transformam uma linguagem de sistema segura em uma ferramenta universal. Se você programa em Python e está de olho no Rust para microsserviços de alta carga, utilitários CLI ou processamento de dados — este artigo é para você.
\n\nNão vamos listar todos os 100.000+ crates (como os pacotes são chamados em Rust). Em vez disso, vou mostrar as 10 bibliotecas Rust mais úteis que realmente aceleram o desenvolvimento. Você verá exemplos de código, descobrirá quais problemas cada biblioteca resolve e entenderá por onde começar a mergulhar no mundo do ecossistema Rust.
\n\n1. Serde — o rei da serialização
\n\nSe você trabalha com JSON, YAML, TOML ou qualquer outro formato de dados — você precisa do serde. Não é apenas uma biblioteca, mas sim um framework completo para serialização e desserialização de estruturas de dados. Serde está na base de milhares de outros crates e é o padrão de facto.
Exemplo: transformar uma estrutura Rust em JSON e vice-versa.
\n\nuse serde::{Serialize, Deserialize};\n\n#[derive(Serialize, Deserialize, Debug)]\nstruct User {\n name: String,\n age: u8,\n email: String,\n}\n\nfn main() {\n let user = User {\n name: "Alexei".into(),\n age: 30,\n email: "alex@example.com".into(),\n };\n\n // Serialização para JSON\n let json = serde_json::to_string(&user).unwrap();\n println!("JSON: {}", json);\n\n // Desserialização de volta\n let decoded: User = serde_json::from_str(&json).unwrap();\n println!("Decodificado: {:?}", decoded);\n}\n\nObserve: Serde funciona com qualquer formato — basta conectar o crate adaptador (serde_json, serde_yaml, etc.). Esta é uma das bibliotecas Rust mais populares, com milhões de downloads.
2. Tokio — runtime assíncrono
\n\nPara escrever aplicações de rede de alto desempenho em Rust, utiliza-se assincronia. Tokio é o principal runtime assíncrono, fornecendo um executor multi-thread, timers, entrada/saída de rede e canais. Sem Tokio, é impossível imaginar o ecossistema Rust moderno.
\n\nUm simples servidor TCP echo com Tokio:
\n\nuse tokio::net::TcpListener;\nuse tokio::io::{AsyncReadExt, AsyncWriteExt};\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n let listener = TcpListener::bind("127.0.0.1:8080").await?;\n println!("Servidor iniciado na porta 8080");\n\n loop {\n let (mut socket, _) = listener.accept().await?;\n tokio::spawn(async move {\n let mut buf = [0; 1024];\n loop {\n let n = socket.read(&mut buf).await.unwrap();\n if n == 0 { break; }\n socket.write_all(&buf[0..n]).await.unwrap();\n }\n });\n }\n}\n\nTokio é usado em frameworks web (Actix, Warp), bancos de dados (TiKV) e até em ferramentas do Kubernetes. Se você está procurando bibliotecas Rust para desenvolvimento web — Tokio será sua base.
\n\n3. Reqwest — cliente HTTP para humanos
\n\nreqwest é um cliente HTTP elegante, construído sobre Tokio. Ele suporta requisições assíncronas e bloqueantes, JSON, multipart e proxies. Ideal para escrever crawlers, integrações com API e testes.
Requisição GET assíncrona com resposta JSON:
\n\nuse reqwest::Client;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n let client = Client::new();\n let resp = client\n .get("https://api.github.com/repos/rust-lang/rust")\n .header("User-Agent", "my-rust-app")\n