Apache OpenDAL™ Rust Core
opendal is the Rust core that every OpenDAL binding is built on. It is the
most complete and most mature surface of the project: every service, every
layer, and the full async API live here first.
New to the model behind the API? Read Concepts first — service, operator, layer, operation are the same four ideas in every language.
Status
Stable and production-ready. The crate follows semver; breaking changes are batched into minor releases and documented in the Upgrade Guide.
Capabilities
- Async-first, with an optional blocking API.
- Streaming reads and writes for data that does not fit in memory.
- 50+ services behind one API — see Services for the full list and per-service configuration.
- Composable layers for retry, logging, timeout, and metrics — see Going to production.
- Presigned URLs for services that support them (S3, GCS, Azblob, …).
Installation
cargo add opendal
OpenDAL is modular: each service is its own feature flag. The in-memory service
is always available; enable any other service — including fs — with its
services-* feature.
[dependencies]
opendal = { version = "0.57", features = ["services-s3"] }
Useful Links
- API reference: docs.rs/opendal (release) · dev build
- Services & configuration: /services
- Upgrade guide: docs.rs
- Changelog: docs.rs
- Source & examples:
core/·core/examples/
Next steps
- Getting started — a runnable program, then a real backend.
- Connecting to your storage — build an operator for any service.
- Common tasks — read, write, stream, list, presign, and more.
- Going to production — retry, timeouts, errors, observability.