Crate opendal

source ·
Expand description

OpenDAL is the Open Data Access Layer to freely, painlessly, and efficiently access data.

  • Documentation: All docs are carried byself, visit docs for more.
  • Services: All supported services could be found at services.
  • Layers: All builtin layer could be found at layers.
  • Features: All features could be found at features.

Quick Start

use opendal::layers::LoggingLayer;
use opendal::services;
use opendal::Operator;
use opendal::Result;

async fn main() -> Result<()> {
    // Pick a builder and configure it.
    let mut builder = services::S3::default();

    // Init an operator
    let op = Operator::create(builder)?
        // Init with logging layer enabled.

    // Create object handler.
    let o = op.object("test_file");

    // Write data
    o.write("Hello, World!").await?;

    // Read data
    let bs =;

    // Fetch metadata
    let meta = o.metadata().await?;
    let mode = meta.mode();
    let length = meta.content_length();

    // Delete



This module holds documentation for OpenDAL.
Layer is the mechanism to intercept operations.
Ops provides the operation args struct like OpRead for user.
Raw modules provide raw APIs that used by underlying services
Services will provide builders to build underlying backends.


BatchOperator is used to take batch operations like walk_dir and remove_all, should be constructed by Operator::batch().
Error is the error struct returned by all opendal functions.
Object is the handler for all object related operations.
ObjectLister is returned by Object::list to list objects.
Metadata carries all object metadata.
ObjectMultipart represent an ongoing multipart upload.
ObjectPart is generated by write_multipart operation, carries required information for complete_multipart.
ObjectReader is the public API for users.
Operator is the user-facing APIs for object and object streams.
OperatorBuilder is a typed builder to builder an Operator.
Metadata for operator, users can use this metadata to get information of operator.


ErrorKind is all kinds of opendal’s Error.
ObjectMode represents the corresponding object’s mode.
Services that OpenDAL supports


Builder will build an accessor;

Type Definitions

Result that is a wrapper of Reustl<T, opendal::Error>