Expand description

OpenDAL is the Open Data Access Layer that connect the whole world together.

Supported Services

ServicesDescription
fsPOSIX alike file system.
memoryIn memory backend support.
s3AWS S3 alike services.

Example

use anyhow::Result;
use futures::AsyncReadExt;
use futures::StreamExt;
use opendal::services::fs;
use opendal::ObjectMode;
use opendal::Operator;

#[tokio::main]
async fn main() -> Result<()> {
    let op = Operator::new(fs::Backend::build().root("/tmp").finish().await?);

    let o = op.object("test_file");

    // Write data info file;
    let _ = o.write("Hello, World!").await?;

    // Read data from file;
    let bs = o.read().await?;

    // Read range from file;
    let bs = o.range_read(1..=11).await?;

    // Get file's Metadata
   let meta = o.metadata().await?;

    // List dir.
    let mut obs = op.objects("").await?.map(|o| o.expect("list object"));
    while let Some(o) = obs.next().await {
        let meta = o.metadata().await?;
        let path = meta.path();
        let mode = meta.mode();
        let length = meta.content_length();
    }

    // Delete file.
    o.delete().await?;

    Ok(())
}

Modules

Providing IO utils like into_sink, into_stream.

Operations used by Accessor

readersDeprecated

Reader related helper tools

Providing specific services support.

Structs

Metadata carries all object metadata.

Handler for all object related operations.

User-facing APIs for object and object streams.

Enums

ObjectMode represents the corresponding object’s mode.

Backends that OpenDAL supports

Traits

Underlying trait of all backends for implementors.

BytesRead represents a reader of bytes.

BytesSink represents a sink of bytes.

BytesStream represents a stream of bytes.

BytesWrite represents a writer of bytes.

Layer is used to intercept the operations on the underlying storage.

ObjectStream represents a stream of object.

Type Definitions

BytesReader is a boxed dyn BytesRead.

BytesWriter is a boxed dyn BytesWrite.

ObjectStreamer is a boxed dyn ObjectStream