Skip to main content

Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

An asynchronous OSS client.

Implementations§

Source§

impl Client

Source

pub fn presign_url<S1, S2>( &self, bucket_name: S1, object_key: S2, options: PresignGetOptions, ) -> String
where S1: AsRef<str>, S2: AsRef<str>,

Presign URL for GET request without any additional headers supported, for browser mostly

Source

pub fn presign_raw_request(&self, oss_request: OssRequest) -> SignedOssRequest

Presign a raw request, get the url and headers which contain calculated signature. So you can use the url and headers in other applications, frameworks or languages to complete the request.

§Examples

Get the presigned url and headers using ali-oss-rs crate.

let client = Client::from_env();

let object = format!("rust-sdk-test/{}.webp", Uuid::new_v4());

let request = OssRequest::new()
    .method(RequestMethod::Put)
    .bucket("yuanyq")
    .object(&object)
    .add_header("content-type", "image/webp")
    .add_header("content-length", "36958");

let SignedOssRequest {url, headers} = client.presign_raw_request(request);
log::debug!("{} {:#?}", url, headers);

You will get the headers includes calculated authorization string. Then copy the url and headers to your javascript code which sending HTTP request using Axios:

const Axios = require("axios");
const fs = require("fs");

const axios = Axios.create();

(async function() {
    const filePath = "/home/yuanyq/Pictures/test-8.webp";
    const fileStream = fs.createReadStream(filePath);

    const response = await axios.request({
        method: "PUT",
        url: "https://yuanyq.oss-cn-beijing.aliyuncs.com/rust-sdk-test/xxxxx.webp",
        headers: {
            "content-type": "image/webp",
            "authorization": "OSS4-HMAC-SHA256 Credential=LTAIxxxxxxpeA/20250228/cn-beijing/oss/aliyun_v4_request,Signature=xxxxx",
            "x-oss-content-sha256": "UNSIGNED-PAYLOAD",
            "x-sdk-client": "ali-oss-rs/0.1.3",
            "x-oss-date": "20250228T074254Z",
            "content-length": "36958",
        },
        data: fileStream
    });
    console.log(response);
})();
Source§

impl Client

Source

pub fn from_env() -> Self

Creates a new client from environment variables.

  • ALI_ACCESS_KEY_ID The access key id
  • ALI_ACCESS_KEY_SECRET The access key secret
  • ALI_OSS_ENDPOINT The endpoint of the OSS service. e.g. oss-cn-hangzhou.aliyuncs.com. Or, you can write full URL http://oss-cn-hangzhou.aliyuncs.com or https://oss-cn-hangzhou.aliyuncs.com with scheme http or https.
  • ALI_OSS_REGION Optional. The region id of the OSS service e.g. cn-hangzhou, cn-beijing. If not present, It will be inferred from ALI_OSS_ENDPOINT env.
Source

pub fn new<S1, S2, S3, S4>( access_key_id: S1, access_key_secret: S2, region: S3, endpoint: S4, ) -> Self
where S1: AsRef<str>, S2: AsRef<str>, S3: AsRef<str>, S4: AsRef<str>,

Create a new client.

See Self::from_env for more details about the arguments.

If you need highly cusomtized reqwest::Client to setup this struct, Please check ClientBuilder

Source

pub fn clone_to<S1, S2>(&self, region: S1, endpoint: S2) -> Self
where S1: AsRef<str>, S2: AsRef<str>,

Clone a new client instance with the same security data and different region. This is helpful if you are operation on buckets across multiple regions with a single pair of access key id and secret.

Trait Implementations§

Source§

impl BucketOperations for Client

Source§

fn put_bucket<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, config: PutBucketConfiguration, options: Option<PutBucketOptions>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S: 'async_trait + AsRef<str> + Send, Self: 'async_trait, 'life0: 'async_trait,

Create a bucket.

bucket_name constraint:

  • 3 to 63 characters length
  • only lower case ascii alphabets, numbers and hyphen (-) are allowed
  • not starts or ends with hyphen character

Official document: https://help.aliyun.com/zh/oss/developer-reference/putbucket

Source§

fn list_buckets<'life0, 'async_trait>( &'life0 self, options: Option<ListBucketsOptions>, ) -> Pin<Box<dyn Future<Output = Result<ListBucketsResult>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn delete_bucket<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S: 'async_trait + AsRef<str> + Send, Self: 'async_trait, 'life0: 'async_trait,

Delete a bucket. Only non-empty bucket can be deleted

Official document: https://help.aliyun.com/zh/oss/developer-reference/deletebucket

Source§

fn get_bucket_info<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, ) -> Pin<Box<dyn Future<Output = Result<BucketDetail>> + Send + 'async_trait>>
where S: 'async_trait + AsRef<str> + Send, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_bucket_location<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
where S: 'async_trait + AsRef<str> + Send, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn get_bucket_stat<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, ) -> Pin<Box<dyn Future<Output = Result<BucketStat>> + Send + 'async_trait>>
where S: 'async_trait + AsRef<str> + Send, Self: 'async_trait, 'life0: 'async_trait,

Get bucket statistics data

Official document: https://help.aliyun.com/zh/oss/developer-reference/getbucketstat

Source§

fn list_objects<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, options: Option<ListObjectsOptions>, ) -> Pin<Box<dyn Future<Output = Result<ListObjectsResult>> + Send + 'async_trait>>
where S: 'async_trait + AsRef<str> + Send, Self: 'async_trait, 'life0: 'async_trait,

List objects in a bucket (V2)

Official document: https://help.aliyun.com/zh/oss/developer-reference/listobjectsv2

Source§

impl CnameOperations for Client

Source§

fn list_cname<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, ) -> Pin<Box<dyn Future<Output = Result<Vec<CnameInfo>>> + Send + 'async_trait>>
where S: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

impl MultipartUploadsOperations for Client

Source§

fn list_multipart_uploads<'life0, 'async_trait, S>( &'life0 self, bucket_name: S, options: Option<ListMultipartUploadsOptions>, ) -> Pin<Box<dyn Future<Output = Result<ListMultipartUploadsResult>> + Send + 'async_trait>>
where S: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

List multipart uploads which are initialized but not completed nor aborted.

Official document: https://help.aliyun.com/zh/oss/developer-reference/listmultipartuploads

Source§

fn list_parts<'life0, 'async_trait, S1, S2, S3>( &'life0 self, bucket_name: S1, object_key: S2, upload_id: S3, options: Option<ListPartsOptions>, ) -> Pin<Box<dyn Future<Output = Result<ListPartsResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, S3: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

List parts which uploaded successfully associated with the given upload_id

Official document: https://help.aliyun.com/zh/oss/developer-reference/listparts

Source§

fn initiate_multipart_uploads<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<InitiateMultipartUploadOptions>, ) -> Pin<Box<dyn Future<Output = Result<InitiateMultipartUploadResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn upload_part_from_file<'life0, 'async_trait, S1, S2, P>( &'life0 self, bucket_name: S1, object_key: S2, file_path: P, range: Range<u64>, params: UploadPartRequest, ) -> Pin<Box<dyn Future<Output = Result<UploadPartResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, P: AsRef<Path> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Upload part of a file. the caller should take responsibility to make sure the range is valid.

Official document: https://help.aliyun.com/zh/oss/developer-reference/uploadpart

Source§

fn upload_part_from_buffer<'life0, 'async_trait, S1, S2, B>( &'life0 self, bucket_name: S1, object_key: S2, buffer: B, params: UploadPartRequest, ) -> Pin<Box<dyn Future<Output = Result<UploadPartResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, B: Into<Vec<u8>> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Upload part from buffer.

Official document: https://help.aliyun.com/zh/oss/developer-reference/uploadpart

Source§

fn upload_part_from_base64<'life0, 'async_trait, S1, S2, S3>( &'life0 self, bucket_name: S1, object_key: S2, base64_string: S3, params: UploadPartRequest, ) -> Pin<Box<dyn Future<Output = Result<UploadPartResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, S3: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Upload part from base64 string.

Official document: https://help.aliyun.com/zh/oss/developer-reference/uploadpart

Source§

fn upload_part_copy<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, dest_object_key: S2, data: UploadPartCopyRequest, options: Option<UploadPartCopyOptions>, ) -> Pin<Box<dyn Future<Output = Result<UploadPartCopyResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

When you want to copy a file larger than 1GB, you must use upload_part_copy. First, initiate a multipart upload and get uploadId, then call this method to upload parts of the source object. Finally complete the multipart upload by invoking complete_multipart_uploads

Offical document: https://help.aliyun.com/zh/oss/developer-reference/uploadpartcopy

Source§

fn complete_multipart_uploads<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, data: CompleteMultipartUploadRequest, options: Option<CompleteMultipartUploadOptions>, ) -> Pin<Box<dyn Future<Output = Result<CompleteMultipartUploadResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn abort_multipart_uploads<'life0, 'async_trait, S1, S2, S3>( &'life0 self, bucket_name: S1, object_key: S2, upload_id: S3, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, S3: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

impl ObjectAclOperations for Client

Source§

fn get_object_acl<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<GetObjectAclOptions>, ) -> Pin<Box<dyn Future<Output = Result<ObjectAcl>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Get an object’s acl.

Official document: https://help.aliyun.com/zh/oss/developer-reference/getobjectacl

Source§

fn put_object_acl<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, acl: ObjectAcl, options: Option<GetObjectAclOptions>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Put an object’s acl. If you want to restore the object’s acl to follow bucket acl settings, pass acl as ObjectAcl::Default

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobjectacl

Source§

impl ObjectOperations for Client

Source§

fn put_object_from_file<'life0, 'async_trait, S1, S2, P>( &'life0 self, bucket_name: S1, object_key: S2, file_path: P, options: Option<PutObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<PutObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, P: AsRef<Path> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

The object_key constraints:

  • length between [1, 1023]
  • must NOT starts or ends with / or \. e.g. path/to/subfolder/some-file.txt
  • the file_path specify full path to the file to be uploaded
  • the file must exist and must be readable
  • file length less than 5GB

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobject

Source§

fn put_object_from_buffer<'life0, 'async_trait, S1, S2, B>( &'life0 self, bucket_name: S1, object_key: S2, buffer: B, options: Option<PutObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<PutObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, B: Into<Vec<u8>> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Create an object from buffer. If you are going to upload a large file, it is recommended to use upload_file instead. And, it is recommended to set mime_type in options

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobject

Source§

fn put_object_from_base64<'life0, 'async_trait, S1, S2, S3>( &'life0 self, bucket_name: S1, object_key: S2, base64_string: S3, options: Option<PutObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<PutObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, S3: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Create an object from base64 string. And, it is recommended to set mime_type in options

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobject

Source§

fn append_object_from_file<'life0, 'async_trait, S1, S2, P>( &'life0 self, bucket_name: S1, object_key: S2, file_path: P, position: u64, options: Option<AppendObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<AppendObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, P: AsRef<Path> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn append_object_from_buffer<'life0, 'async_trait, S1, S2, B>( &'life0 self, bucket_name: S1, object_key: S2, buffer: B, position: u64, options: Option<AppendObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<AppendObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, B: Into<Vec<u8>> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Append object from buffer. suitable for small size content And, it is recommended to set mime_type in options

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobject

Source§

fn append_object_from_base64<'life0, 'async_trait, S1, S2, S3>( &'life0 self, bucket_name: S1, object_key: S2, base64_string: S3, position: u64, options: Option<AppendObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<AppendObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, S3: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Append object from base64 string. suitable for small size content And, it is recommended to set mime_type in options

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobject

Source§

fn get_object_to_file<'life0, 'async_trait, S1, S2, P>( &'life0 self, bucket_name: S1, object_key: S2, file_path: P, options: Option<GetObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<GetObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, P: AsRef<Path> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Download oss object to local file. file_path is the full file path to save. If the file_path parent path does not exist, it will be created

Official document: https://help.aliyun.com/zh/oss/developer-reference/getobject

Source§

fn get_object_to_buffer<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<GetObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Get object content into memory (bytes array).

Large files can consume significant memory, exercise caution when using this function.

Source§

fn create_folder<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Create a “folder”. The object_key must ends with /

Official document: https://help.aliyun.com/zh/oss/developer-reference/putobject

Source§

fn delete_folder<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Delete a “folder”. if the folder contains any object, it will not be deleted

Official document: https://help.aliyun.com/zh/oss/developer-reference/deleteobject

Source§

fn get_object_metadata<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<GetObjectMetadataOptions>, ) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn exists<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<GetObjectMetadataOptions>, ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Check if the object exists or not using get object metadata

Official document: https://help.aliyun.com/zh/oss/developer-reference/getobjectmeta

Source§

fn head_object<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<HeadObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Get more detail object metadata

Official document: https://help.aliyun.com/zh/oss/developer-reference/headobject

Source§

fn copy_object<'life0, 'async_trait, S1, S2, S3, S4>( &'life0 self, source_bucket_name: S1, source_object_key: S2, dest_bucket_name: S3, dest_object_key: S4, options: Option<CopyObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<CopyObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, S3: AsRef<str> + Send + 'async_trait, S4: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Copy files (Objects) between the same or different Buckets within the same region.

Official document: https://help.aliyun.com/zh/oss/developer-reference/copyobject

Source§

fn delete_object<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<DeleteObjectOptions>, ) -> Pin<Box<dyn Future<Output = Result<DeleteObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn delete_multiple_objects<'c, 'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, config: DeleteMultipleObjectsConfig<'c, S2>, ) -> Pin<Box<dyn Future<Output = Result<DeleteMultipleObjectsResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + Sync + 'async_trait, Self: 'async_trait, 'c: 'async_trait, 'life0: 'async_trait,

Source§

fn restore_object<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, config: RestoreObjectRequest, ) -> Pin<Box<dyn Future<Output = Result<RestoreObjectResult>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn clean_restored_object<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

impl ObjectSymlinkOperations for Client

Put a symlink object.

target_object_key should be a full and valid object key.

Official document: https://help.aliyun.com/zh/oss/developer-reference/putsymlink

Get a symlink object. The returned string is the target object key

Official document: https://help.aliyun.com/zh/oss/developer-reference/getsymlink

Source§

impl ObjectTagOperations for Client

Source§

fn get_object_tags<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<GetObjectTagOptions>, ) -> Pin<Box<dyn Future<Output = Result<HashMap<String, String>>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn put_object_tags<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, tags: HashMap<String, String>, options: Option<PutObjectTagOptions>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Source§

fn delete_object_tags<'life0, 'async_trait, S1, S2>( &'life0 self, bucket_name: S1, object_key: S2, options: Option<DeleteObjectTagOptions>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where S1: AsRef<str> + Send + 'async_trait, S2: AsRef<str> + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more