OpenDAL   ![Build Status] ![Latest Version] ![Crate Downloads] ![chat]

OpenDAL is a data access layer that allows users to easily and efficiently retrieve data from various storage services in a unified way.

Services

Standard Storage Protocols (like ftp, webdav)

Object Storage Services (like s3, gcs, azblob)

File Storage Services (like fs, azdls, hdfs)

Consumer Cloud Storage Service (like gdrive, onedrive)

Key-Value Storage Service (like rocksdb, sled)

Cache Storage Service (like memcached, moka)

Welcome to add any services that are not currently supported here.

Features

Access data freely

Access data painlessly

Access data efficiently

Quickstart

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

[tokio::main]

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

// Init an operator
let op = Operator::new(builder)?
    // Init with logging layer enabled.
    .layer(LoggingLayer::default())
    .finish();

// Write data
op.write("hello.txt", "Hello, World!").await?;

// Read data
let bs = op.read("hello.txt").await?;

// Fetch metadata
let meta = op.stat("hello.txt").await?;
let mode = meta.mode();
let length = meta.content_length();

// Delete
op.delete("hello.txt").await?;

Ok(())

} ```

Examples

The examples are available at here.

Contributing

Check out the CONTRIBUTING guide for more details on getting started with contributing to this project.

License

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0