Crate tako

Crate tako 

Source
Expand description

A lightweight, modular web framework for async applications.

Tako focuses on ergonomics and composability. It provides routing, extractors, responses, middleware, streaming, WebSockets/SSE, optional TLS, and integrations like GraphQL — in a small, pragmatic package.

§High-level features

  • Macro-free routing with dynamic path params and TSR support
  • Type-safe handlers with extractor-based arguments (Axum-like ergonomics)
  • Simple Responder trait to return strings, tuples, or full responses
  • Middleware pipeline (auth, body limits, etc.) and optional plugins (CORS, compression, rate limits)
  • Streaming bodies, file serving, range requests, and SSE
  • WebSocket upgrades and helpers
  • Optional TLS (rustls) and HTTP/2 (feature)
  • Optional GraphQL support (async-graphql) and GraphiQL UI

§Compatibility

  • Runtime: tokio
  • HTTP: hyper 1.x

§Quickstart

use tako::{Method, router::Router, responder::Responder, types::Request};

async fn hello(_: Request) -> impl Responder { "Hello, World!" }

let mut router = Router::new();
router.route(Method::GET, "/", hello);

§Key concepts

  • router::Router manages routes, middleware and dispatch.

  • extractors parse request data (headers, params, JSON, forms, etc.).

  • responder::Responder converts return values into HTTP responses.

  • middleware composes cross-cutting concerns.

  • Static file serving (module static) and file_stream provide static and streaming file responses.

  • ws and sse enable real-time communication.

  • plugins add CORS, compression, and rate limiting (feature: plugins).

  • graphql and graphiql add GraphQL support (feature: async-graphql / graphiql).

§Feature flags

  • client — outbound HTTP clients over TCP/TLS
  • file-stream — file streaming utilities
  • http2 — enable ALPN h2 in TLS server
  • jemalloc — use jemalloc as global allocator
  • multipart — multipart form-data extractors
  • plugins — CORS, compression, rate limiting
  • protobuf — protobuf extractors (prost)
  • simd — SIMD JSON extractor (simd-json)
  • tls — TLS server (rustls)
  • tako-tracing — structured tracing subscriber
  • zstd — Zstandard compression option within plugins::compression

Re-exports§

pub use responder::NOT_FOUND;
pub use server_tls::serve_tls;tls

Modules§

body
HTTP request and response body handling utilities. HTTP request and response body handling utilities for efficient data processing.
clientclient
HTTP client implementation for making outbound requests. HTTP client implementations for making outbound requests with TLS support.
extractors
Request data extraction utilities for parsing query params, JSON, and more. HTTP request data extraction utilities and traits.
file_streamfile-stream
File streaming utilities for serving files. File streaming utilities for efficient HTTP file delivery.
graphiqlgraphiql
GraphiQL UI helpers. GraphiQL HTML responder and helper for Tako.
graphqlasync-graphql
GraphQL support (request extractors, responses, and subscriptions). Async-GraphQL integration for Tako: extractors, responses, and subscriptions.
header
HTTP header types
middleware
Middleware for processing requests and responses in a pipeline. Middleware system for request and response processing pipelines.
pluginsplugins
Plugin system for extending framework functionality. Plugin system for extending framework functionality with composable modules.
redirect
Redirection utilities for handling HTTP redirects. Redirect response utilities for handlers.
responder
Response generation utilities and traits. Response generation utilities and trait implementations for HTTP responses.
router
Request routing and dispatch functionality. HTTP request routing and dispatch functionality.
server_tlstls
TLS/SSL server implementation for secure connections. TLS-enabled HTTP server implementation for secure connections.
signalssignals
In-process signal arbiter for custom events. In-process signal arbiter and dispatch system.
sse
Server-Sent Events (SSE) support for real-time communication. Server-Sent Events (SSE) implementation for real-time data streaming.
state
Application state management and dependency injection. Global application state management and dependency injection (type-based).
static
Static file serving utilities. Static file serving utilities for web applications.
tracingtako-tracing
Distributed tracing integration for observability. Distributed tracing integration for observability and debugging.
types
Core type definitions used throughout the framework. Core type definitions and aliases used throughout the Tako framework.
ws
WebSocket connection handling and message processing. WebSocket connection handling and message processing utilities.

Structs§

Bytes
A cheaply cloneable and sliceable chunk of contiguous memory.
Full
A body that consists of a single chunk.
Method
The Request Method (VERB)
StatusCode
An HTTP status code (status-code in RFC 9110 et al.).

Functions§

bind_with_port_fallback
Bind a TCP listener for addr, asking interactively to increment the port if it is already in use.
serve
Starts the HTTP server with the given listener and router.