* error refactored: moved to thiserror * Result type alias for better ergonomics: * removed field from MinioErrorCode::BucketNotEmpty enum * made field private of MinioErrorResponse * updated XmlError * simplified calling errors * bumped toolchain channel form 1.86.0 to 1.87.0 * bumped toolchain channel form 1.87.0 to 1.88.0 due to clippy fixes that are not compatible with 1.87.0
MinIO Rust SDK for Amazon S3 Compatible Cloud Storage
The MinIO Rust SDK is a Simple Storage Service (aka S3) client for performing bucket and object operations to any Amazon S3 compatible object storage service. It provides a strongly-typed, async-first interface to the MinIO and Amazon S3-compatible object storage APIs.
Each supported S3 operation has a corresponding request builder (for example: [BucketExists], [PutObject], [UploadPartCopy]), which allows users to configure request parameters using a fluent builder pattern.
All request builders implement the [S3Api] trait, which provides the async send method to execute the request and return a typed response.
Basic Usage
use minio::s3::Client;
use minio::s3::types::S3Api;
use minio::s3::response::BucketExistsResponse;
#[tokio::main]
async fn main() {
let client: Client = Default::default(); // configure your client
let exists: BucketExistsResponse = client
.bucket_exists("my-bucket")
.send()
.await
.expect("request failed");
println!("Bucket exists: {}", exists.exists);
}
Features
- Request builder pattern for ergonomic API usage
- Full async/await support via [
tokio] - Strongly-typed responses
- Transparent error handling via
Result<T, Error>
Design
- Each API method on the [
Client] returns a builder struct - Builders implement [
ToS3Request] for request conversion and [S3Api] for execution - Responses implement [
FromS3Response] for consistent deserialization
Examples
You can run the examples from the command line with:
cargo run --example <example_name>
The examples below cover several common operations.
You can find the complete list of examples in the examples directory.
file_uploader.rs
file_downloader.rs
object_prompt.rs
License
This SDK is distributed under the Apache License, Version 2.0, see LICENSE for more information.