Warp para Rust: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Warp e para que serve?

\n\n

Warp é um framework web moderno, assíncrono e componível (composable) para a linguagem Rust, construído sobre a biblioteca hyper e o runtime assíncrono tokio. Sua filosofia principal é o uso de filtros (filters), que são combinados como blocos de construção para criar rotas complexas e manipuladores de requisições.

\n\n

Warp é ideal para criar servidores web de alto desempenho, APIs REST, microsserviços e até mesmo aplicações web simples. Graças à tipagem estrita do Rust e ao poderoso sistema de filtros, Warp permite evitar muitos erros em tempo de compilação, garantindo segurança e previsibilidade ao código.

\n\n

Por que usar Warp?

\n
    \n
  • Desempenho: Rust + async/await oferecem velocidade comparável a C/C++.
  • \n
  • Segurança: O compilador Rust verifica tipos e memória, e Warp verifica a corretude das rotas.
  • \n
  • Componibilidade: Filtros podem ser combinados, reutilizados e testados isoladamente.
  • \n
  • Minimalismo: Sem macros ou mágica — tudo é construído com funções e closures.
  • \n
  • Assincronismo nativo: Suporte a WebSocket, transmissão de dados em fluxo e conexões longas.
  • \n
\n\n

Instalação do Warp

\n\n

Warp é uma biblioteca para Rust, portanto a instalação é feita através do gerenciador de pacotes cargo. Certifique-se de ter o Rust instalado (versão recomendada 1.70+).

\n\n

Crie um novo projeto:

\n
cargo new my_warp_app\ncd my_warp_app
\n\n

Adicione as dependências no arquivo Cargo.toml:

\n
[dependencies]\nwarp = "0.3"\ntokio = { version = "1", features = ["full"] }
\n\n

Em seguida, execute a compilação:

\n
cargo build
\n\n

Se você estiver usando Windows, pode ser necessário instalar o Build Tools for Visual Studio para compilar.

\n\n

Início rápido: primeiro servidor com Warp

\n\n

Crie um servidor HTTP simples que responde "Hello, World!" a qualquer requisição GET.

\n\n
use warp::Filter;\n\n#[tokio::main]\nasync fn main() {\n    // Define a rota: GET / -> "Hello, World!"\n    let hello = warp::path::end()\n        .map(|| "Hello, World!");\n\n    // Inicia o servidor na porta 3030\n    warp::serve(hello)\n        .run(([127, 0, 0, 1], 3030))\n        .await;\n}
\n\n

Execute o servidor com o comando cargo run e abra o navegador em http://127.0.0.1:3030. Você verá a mensagem "Hello, World!".

\n\n

Principais métodos e funções do Warp

\n\n

Abaixo estão as principais funções e métodos do Warp com descrição detalhada e exemplos.

\n\n

1. warp::any()

\n

O que faz: Cria um filtro que corresponde a qualquer requisição (método, caminho, cabeçalhos — tanto faz). Usado como base para combinação.

\n

Parâmetros: Nenhum.

\n

Exemplo:

\n
use warp::Filter;\n\nlet any_route = warp::any()\n    .map(|| "This matches any request");
\n\n

2. warp::path(String)

\n

O que faz: Cria um filtro que corresponde a um segmento específico do caminho. Por exemplo, warp::path("api") corresponde a /api.

\n

Parâmetros: path: impl Into<String> — string do caminho.

\n

Exemplo:

\n
use warp::Filter;\n\nlet api_route = warp::path("api")\n    .map(|| "API endpoint");
\n\n

3. warp::path::param()

\n

O que faz: Extrai um parâmetro dinâmico do caminho (por exemplo, ID do usuário). Retorna um valor do tipo String (ou pode-se especificar outro tipo que implemente FromStr).

\n

Parâmetros: Nenhum (o tipo é inferido

Recommendations