A compatibility library for running Warp filters within Axum servers, enabling gradual migration from Warp to Axum. warpdrive is based on warp v0.3 and will not work for warp v0.4 or higher.
Add to your Cargo.toml:
[dependencies]
warpdrive = "0.1.0"
axum = "0.8"
warp = "0.3"use axum::{routing::get, Router};
use warpdrive::WarpService;
use warp::Filter;
#[tokio::main]
async fn main() {
// Existing Warp routes
let warp_routes = warp::path("api")
.and(warp::get())
.map(|| "Hello from Warp!")
.boxed();
// New Axum routes
let app = Router::new()
.route("/", get(|| async { "Hello from Axum!" }))
.fallback_service(WarpService::new(warp_routes));
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
}