mirror of
https://github.com/minio/minio-rs.git
synced 2025-12-06 15:26:51 +08:00
Adopt the typed-builder crate throughout the S3 API to provide compile-time validation of builder patterns. This change improves type safety and developer experience when constructing S3 API requests.
83 lines
3.2 KiB
Markdown
83 lines
3.2 KiB
Markdown
# MinIO Rust SDK for Amazon S3 Compatible Cloud Storage
|
|
|
|
[](https://github.com/minio/minio-rs/actions/workflows/rust.yml)
|
|
[](https://docs.rs/minio/latest/minio/)
|
|
[](https://slack.min.io)
|
|
[](https://sourcegraph.com/github.com/minio/minio-rs?badge)
|
|
[](https://crates.io/crates/minio)
|
|
[](https://github.com/minio/minio-rs/blob/master/LICENSE)
|
|
|
|
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`](crate::s3::types::S3Api::send) method to execute the request and return a typed response.
|
|
|
|
|
|
## Basic Usage
|
|
|
|
```no_run
|
|
use minio::s3::MinioClient;
|
|
use minio::s3::creds::StaticProvider;
|
|
use minio::s3::http::BaseUrl;
|
|
use minio::s3::types::S3Api;
|
|
use minio::s3::response::BucketExistsResponse;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let base_url = "play.min.io".parse::<BaseUrl>().unwrap();
|
|
let static_provider = StaticProvider::new("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", None);
|
|
let client = MinioClient::new(base_url, Some(static_provider), None, None).unwrap();
|
|
|
|
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 [`MinioClient`] 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
|
|
|
|
* [Upload a file to MinIO](examples/file_uploader.rs)
|
|
* [Upload a file to MinIO with CLI](examples/put_object.rs)
|
|
|
|
### file_downloader.rs
|
|
|
|
* [Download a file from MinIO](examples/file_downloader.rs)
|
|
|
|
### object_prompt.rs
|
|
|
|
* [Prompt a file on MinIO](examples/object_prompt.rs)
|
|
|
|
|
|
## License
|
|
This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), see [LICENSE](https://github.com/minio/minio-rs/blob/master/LICENSE) for more information.
|