Aro
Aro is a Rust web framework built as a hexagonal Axum adapter: ports live in
aro-core, HTTP and DI adapters in aro-web, persistence adapters in
aro-fletch / fletch-orm, and the aro crate is the facade you depend on.
It aims for a small, stable 1.0 surface — routing, macros, dependency injection, JSON errors, and a blessed persistence path — while leaving advanced web concerns to the Axum / tower ecosystem.
Quickstart
use *;
use SocketAddr;
async
async
Default features enable web and macros. Add fletch (and related flags) when
you need the persistence adapters.
Feature flags
| Feature | Default | Description |
|---|---|---|
web |
yes | HTTP / DI layer (aro-web, including App) |
macros |
yes | Route attribute macros (#[aro::get], …) |
fletch |
no | Persistence adapters (aro-fletch + fletch-orm query adapters) |
test-utils |
no | In-process TestClient helpers |
http2 |
no | HTTP/2 support via Axum |
compression |
no | Response compression (gzip, brotli) |
compression-full |
no | Compression plus zstd and deflate |
decompression |
no | Request decompression (gzip, brotli) |
decompression-full |
no | Decompression plus zstd and deflate |
uuid |
no | UUID column / value support (implies fletch) |
chrono |
no | Chrono datetime support (implies fletch) |
query-adapters |
no | Query adapter wiring (pulled in by fletch) |
MSRV
Aro’s minimum supported Rust version is 1.85.0 (Rust 2024 edition). The MSRV is bumped only in minor releases, and only to a toolchain that is at least six months old.
Documentation
- Guide (mdBook) —
docs/(mdbook build docs; opendocs/book/index.html). - API docs — docs.rs/aro
- Examples —
examples/blog,examples/shortener - ADRs —
docs/adr/ - Changelog —
CHANGELOG.md - Contributing —
CONTRIBUTING.md
Intentionally delegated to the ecosystem
Aro 1.0 does not ship first-class solutions for these. Use Axum, tower, and related crates instead:
- Authentication and authorization
- Sessions / cookies
- TLS termination
- Metrics and observability exporters
- OpenAPI generation
- Static file serving
- WebSockets
Aro re-exports Axum as an escape hatch (aro::web::axum) so you can compose
those layers without fighting the framework.
License
MIT — see LICENSE.