Skip to main content

OperatorFuture

Struct OperatorFuture 

Source
pub struct OperatorFuture<I, O, F: Future<Output = Result<O>>> { /* private fields */ }
Expand description

Operator produces this future.

The future consumes its inputs when it begins executing.

§NOTES

OpenDAL uses this type as an implementation detail. Users should not use it directly.

Implementations§

Source§

impl<F: Future<Output = Result<Metadata>>> OperatorFuture<StatOptions, Metadata, F>

Source

pub fn if_match(self, v: &str) -> Self

Stat only when the file has this exact ETag.

Refer to options::StatOptions::if_match for the full contract.

Source

pub fn if_none_match(self, v: &str) -> Self

Stat only when the file does not have this ETag.

Refer to options::StatOptions::if_none_match for the full contract.

Source

pub fn if_version_match(self, v: &str) -> Self

Stat only when the file has this exact version.

Refer to options::StatOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, v: &str) -> Self

Stat only when the file does not have this version.

Refer to options::StatOptions::if_version_not_match for the full contract.

Source

pub fn if_modified_since(self, v: Timestamp) -> Self

Stat only when the file was modified after this timestamp.

Refer to options::StatOptions::if_modified_since for the full contract.

Source

pub fn if_unmodified_since(self, v: Timestamp) -> Self

Stat only when the file was not modified after this timestamp.

Refer to options::StatOptions::if_unmodified_since for the full contract.

Source

pub fn version(self, v: &str) -> Self

Stat the given version of the file instead of the current one.

Refer to options::StatOptions::version for the full contract.

Source§

impl<F: Future<Output = Result<PresignedRequest>>> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>

Source

pub fn override_content_disposition(self, v: &str) -> Self

Source

pub fn override_cache_control(self, v: &str) -> Self

Source

pub fn override_content_type(self, v: &str) -> Self

Source

pub fn if_match(self, v: &str) -> Self

Make the presigned request stat only when the file has this exact ETag.

Refer to options::StatOptions::if_match for the full contract.

Source

pub fn if_none_match(self, v: &str) -> Self

Make the presigned request stat only when the file does not have this ETag.

Refer to options::StatOptions::if_none_match for the full contract.

Source§

impl<F: Future<Output = Result<PresignedRequest>>> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>

Source

pub fn override_content_disposition(self, v: &str) -> Self

Source

pub fn override_cache_control(self, v: &str) -> Self

Source

pub fn override_content_type(self, v: &str) -> Self

Source

pub fn if_match(self, v: &str) -> Self

Make the presigned request read only when the file has this exact ETag.

Refer to options::ReadOptions::if_match for the full contract.

Source

pub fn if_none_match(self, v: &str) -> Self

Make the presigned request read only when the file does not have this ETag.

Refer to options::ReadOptions::if_none_match for the full contract.

Source§

impl<F: Future<Output = Result<PresignedRequest>>> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>

Source

pub fn content_type(self, v: &str) -> Self

Refer to options::WriteOptions::content_type for more details.

Source

pub fn content_disposition(self, v: &str) -> Self

Refer to options::WriteOptions::content_disposition for more details.

Source

pub fn content_encoding(self, v: &str) -> Self

Refer to options::WriteOptions::content_encoding for more details.

Source

pub fn cache_control(self, v: &str) -> Self

Refer to options::WriteOptions::cache_control for more details.

Source§

impl<F: Future<Output = Result<Buffer>>> OperatorFuture<ReadOptions, Buffer, F>

Source

pub fn range(self, range: impl Into<BytesRange>) -> Self

Set range for this read request.

If we have a file with size n.

  • .. means read bytes in range [0, n) of file.
  • 0..1024 and ..1024 means read bytes in range [0, 1024) of file
  • 1024.. means read bytes in range [1024, n) of file
  • BytesRange::suffix(1024) means read the last min(1024, n) bytes of file
let bs = op.read_with("path/to/file").range(0..1024).await?;
Source

pub fn content_length_hint(self, v: u64) -> Self

Sets known content length as a hint for this read request.

Refer to options::ReadOptions::content_length_hint for more details.

Source

pub fn concurrent(self, concurrent: usize) -> Self

Set concurrent for the reader.

OpenDAL by default to write file without concurrent. This is not efficient for cases when users read large chunks of data. By setting concurrent, opendal will read files concurrently on support storage services.

By setting concurrent, opendal will fetch chunks concurrently with the given chunk size.

let r = op.read_with("path/to/file").concurrent(8).await?;
Source

pub fn chunk(self, chunk_size: usize) -> Self

OpenDAL will use services’ preferred chunk size by default. Users can set chunk based on their own needs.

This following example will make opendal read data in 4MiB chunks:

let r = op.read_with("path/to/file").chunk(4 * 1024 * 1024).await?;
Source

pub fn version(self, v: &str) -> Self

Read the given version of the file instead of the current one.

Refer to options::ReadOptions::version for the full contract.


let mut bs = op.read_with("path/to/file").version(version).await?;
Source

pub fn if_match(self, v: &str) -> Self

Read only when the file has this exact ETag.

Refer to options::ReadOptions::if_match for the full contract.

use opendal_core::Operator;
let mut metadata = op.read_with("path/to/file").if_match(etag).await?;
Source

pub fn if_none_match(self, v: &str) -> Self

Read only when the file does not have this ETag.

Refer to options::ReadOptions::if_none_match for the full contract.

use opendal_core::Operator;
let mut metadata = op.read_with("path/to/file").if_none_match(etag).await?;
Source

pub fn if_version_match(self, v: &str) -> Self

Read only when the file has this exact version.

Refer to options::ReadOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, v: &str) -> Self

Read only when the file does not have this version.

Refer to options::ReadOptions::if_version_not_match for the full contract.

Source

pub fn if_modified_since(self, v: impl Into<Timestamp>) -> Self

Read only when the file was modified after this timestamp.

Refer to options::ReadOptions::if_modified_since for the full contract.

use jiff::Timestamp;
use opendal_core::Operator;
let mut metadata = op.read_with("path/to/file").if_modified_since(time).await?;
Source

pub fn if_unmodified_since(self, v: impl Into<Timestamp>) -> Self

Read only when the file was not modified after this timestamp.

Refer to options::ReadOptions::if_unmodified_since for the full contract.

use jiff::Timestamp;
use opendal_core::Operator;
let mut metadata = op
    .read_with("path/to/file")
    .if_unmodified_since(time)
    .await?;
Source§

impl<F: Future<Output = Result<Reader>>> OperatorFuture<ReaderOptions, Reader, F>

Source

pub fn version(self, v: &str) -> Self

Read the given version of the file instead of the current one.

Refer to options::ReaderOptions::version for the full contract.


let mut r = op.reader_with("path/to/file").version(version).await?;
Source

pub fn concurrent(self, concurrent: usize) -> Self

Set concurrent for the reader.

OpenDAL by default to write file without concurrent. This is not efficient for cases when users read large chunks of data. By setting concurrent, opendal will reading files concurrently on support storage services.

By setting concurrent, opendal will fetch chunks concurrently with the give chunk size.

let r = op.reader_with("path/to/file").concurrent(8).await?;
Source

pub fn chunk(self, chunk_size: usize) -> Self

OpenDAL will use services’ preferred chunk size by default. Users can set chunk based on their own needs.

This following example will make opendal read data in 4MiB chunks:

let r = op
    .reader_with("path/to/file")
    .chunk(4 * 1024 * 1024)
    .await?;
Source

pub fn content_length_hint(self, v: u64) -> Self

Sets known content length as a hint for this reader.

Refer to options::ReaderOptions::content_length_hint for more details.

Source

pub fn gap(self, gap_size: usize) -> Self

Controls the optimization strategy for range reads in Reader::fetch.

When performing range reads, if the gap between two requested ranges is less than or equal to the configured gap size, OpenDAL will merge these ranges into a single read request and discard the unrequested data in between. This helps reduce the number of API calls to remote storage services.

This optimization is particularly useful when performing multiple small range reads that are close to each other, as it reduces the overhead of multiple network requests at the cost of transferring some additional data.

Set to 0 to disable merging ranges separated by a gap. Overlapping or adjacent ranges are still merged.

In this example, if two requested ranges are separated by no more than 1 MiB, they will be merged into a single read request:

let r = op
    .reader_with("path/to/file")
    .chunk(4 * 1024 * 1024)
    .gap(1024 * 1024) // 1MiB gap
    .await?;
Source

pub fn if_match(self, etag: &str) -> Self

Read only when the file has this exact ETag.

Refer to options::ReaderOptions::if_match for the full contract.

use opendal_core::Operator;
let mut r = op.reader_with("path/to/file").if_match(etag).await?;
Source

pub fn if_none_match(self, etag: &str) -> Self

Read only when the file does not have this ETag.

Refer to options::ReaderOptions::if_none_match for the full contract.

use opendal_core::Operator;
let mut r = op.reader_with("path/to/file").if_none_match(etag).await?;
Source

pub fn if_version_match(self, version: &str) -> Self

Read only when the file has this exact version.

Refer to options::ReaderOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, version: &str) -> Self

Read only when the file does not have this version.

Refer to options::ReaderOptions::if_version_not_match for the full contract.

Source

pub fn if_modified_since(self, v: impl Into<Timestamp>) -> Self

Read only when the file was modified after this timestamp.

Refer to options::ReaderOptions::if_modified_since for the full contract.

use jiff::Timestamp;
use opendal_core::Operator;
let mut r = op
    .reader_with("path/to/file")
    .if_modified_since(time)
    .await?;
Source

pub fn if_unmodified_since(self, v: impl Into<Timestamp>) -> Self

Read only when the file was not modified after this timestamp.

Refer to options::ReaderOptions::if_unmodified_since for the full contract.

use jiff::Timestamp;
use opendal_core::Operator;
let mut r = op
    .reader_with("path/to/file")
    .if_unmodified_since(time)
    .await?;
Source§

impl<F: Future<Output = Result<Metadata>>> OperatorFuture<(WriteOptions, Buffer), Metadata, F>

Source

pub fn append(self, v: bool) -> Self

Sets append mode for this write request.

Refer to options::WriteOptions::append for more details.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .append(true)
    .await?;
Source

pub fn chunk(self, v: usize) -> Self

Sets chunk size for buffered writes.

Refer to options::WriteOptions::chunk for more details.

§Example
use bytes::Bytes;

// Set 8MiB chunk size - data will be sent in one API call at close
let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .chunk(8 * 1024 * 1024)
    .await?;
Source

pub fn concurrent(self, v: usize) -> Self

Sets concurrent write operations for this writer.

Refer to options::WriteOptions::concurrent for more details.

§Example
use bytes::Bytes;

// Enable concurrent writes with 8 parallel operations at 128B chunk.
let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .chunk(128)
    .concurrent(8)
    .await?;
Source

pub fn cache_control(self, v: &str) -> Self

Sets Cache-Control header for this write operation.

Refer to options::WriteOptions::cache_control for more details.

§Example
use bytes::Bytes;

// Cache content for 7 days (604800 seconds)
let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .cache_control("max-age=604800")
    .await?;
Source

pub fn content_type(self, v: &str) -> Self

Sets Content-Type header for this write operation.

Refer to options::WriteOptions::content_type for more details.

§Example
use bytes::Bytes;

// Set content type for plain text file
let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .content_type("text/plain")
    .await?;
Source

pub fn content_disposition(self, v: &str) -> Self

Sets Content-Disposition header for this write request.

Refer to options::WriteOptions::content_disposition for more details.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .content_disposition("attachment; filename=\"filename.jpg\"")
    .await?;
Source

pub fn content_encoding(self, v: &str) -> Self

Sets Content-Encoding header for this write request.

Refer to options::WriteOptions::content_encoding for more details.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .content_encoding("gzip")
    .await?;
Source

pub fn if_match(self, s: &str) -> Self

Write only when the file at the write path has this exact ETag.

Refer to options::WriteOptions::if_match for the full contract.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .if_match("\"686897696a7c876b7e\"")
    .await?;
Source

pub fn if_none_match(self, s: &str) -> Self

Write only when the file at the write path does not have this ETag.

Refer to options::WriteOptions::if_none_match for the full contract.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .if_none_match("\"686897696a7c876b7e\"")
    .await?;
Source

pub fn if_version_match(self, version: &str) -> Self

Write only when the file at the write path has this exact version.

Refer to options::WriteOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, version: &str) -> Self

Write only when the file at the write path does not have this version.

Refer to options::WriteOptions::if_version_not_match for the full contract.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Write only when the file still has the identity recorded in metadata.

Refer to options::WriteOptions::if_not_changed for the full contract.

Source

pub fn if_not_exists(self, b: bool) -> Self

Write only when no file exists at the write path.

Refer to options::WriteOptions::if_not_exists for the full contract.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .if_not_exists(true)
    .await?;
Source

pub fn user_metadata( self, data: impl IntoIterator<Item = (String, String)>, ) -> Self

Sets user metadata for this write request.

Refer to options::WriteOptions::user_metadata for more details.

§Example
use bytes::Bytes;

let _ = op
    .write_with("path/to/file", vec![0; 4096])
    .user_metadata([
        ("language".to_string(), "rust".to_string()),
        ("author".to_string(), "OpenDAL".to_string()),
    ])
    .await?;
Source§

impl<F: Future<Output = Result<Writer>>> OperatorFuture<WriteOptions, Writer, F>

Source

pub fn append(self, v: bool) -> Self

Sets append mode for this write request.

Refer to options::WriteOptions::append for more details.

§Example
use bytes::Bytes;

let mut w = op.writer_with("path/to/file").append(true).await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn chunk(self, v: usize) -> Self

Sets chunk size for buffered writes.

Refer to options::WriteOptions::chunk for more details.

§Example
use bytes::Bytes;

// Set 8MiB chunk size - data will be sent in one API call at close
let mut w = op
    .writer_with("path/to/file")
    .chunk(8 * 1024 * 1024)
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn concurrent(self, v: usize) -> Self

Sets concurrent write operations for this writer.

Refer to options::WriteOptions::concurrent for more details.

§Example
use bytes::Bytes;

// Enable concurrent writes with 8 parallel operations
let mut w = op.writer_with("path/to/file").concurrent(8).await?;

// First write starts immediately
w.write(vec![0; 4096]).await?;

// Second write runs concurrently with first
w.write(vec![1; 4096]).await?;

// Ensures all writes complete successfully and in order
w.close().await?;
Source

pub fn cache_control(self, v: &str) -> Self

Sets Cache-Control header for this write operation.

Refer to options::WriteOptions::cache_control for more details.

§Example
use bytes::Bytes;

// Cache content for 7 days (604800 seconds)
let mut w = op
    .writer_with("path/to/file")
    .cache_control("max-age=604800")
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn content_type(self, v: &str) -> Self

Sets Content-Type header for this write operation.

Refer to options::WriteOptions::content_type for more details.

§Example
use bytes::Bytes;

// Set content type for plain text file
let mut w = op
    .writer_with("path/to/file")
    .content_type("text/plain")
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn content_disposition(self, v: &str) -> Self

Sets Content-Disposition header for this write request.

Refer to options::WriteOptions::content_disposition for more details.

§Example
use bytes::Bytes;

let mut w = op
    .writer_with("path/to/file")
    .content_disposition("attachment; filename=\"filename.jpg\"")
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn content_encoding(self, v: &str) -> Self

Sets Content-Encoding header for this write request.

Refer to options::WriteOptions::content_encoding for more details.

§Example
use bytes::Bytes;

let mut w = op
    .writer_with("path/to/file")
    .content_encoding("gzip")
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn if_match(self, s: &str) -> Self

Write only when the file at the write path has this exact ETag.

Refer to options::WriteOptions::if_match for the full contract. Depending on the service, the conditional error may surface when creating the writer, while writing, or when closing it.

§Example
use bytes::Bytes;

let mut w = op
    .writer_with("path/to/file")
    .if_match("\"686897696a7c876b7e\"")
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn if_none_match(self, s: &str) -> Self

Write only when the file at the write path does not have this ETag.

Refer to options::WriteOptions::if_none_match for the full contract.

§Example
use bytes::Bytes;

let mut w = op
    .writer_with("path/to/file")
    .if_none_match("\"686897696a7c876b7e\"")
    .await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn if_version_match(self, version: &str) -> Self

Write only when the file at the write path has this exact version.

Refer to options::WriteOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, version: &str) -> Self

Write only when the file at the write path does not have this version.

Refer to options::WriteOptions::if_version_not_match for the full contract.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Write only when the file still has the identity recorded in metadata.

Refer to options::WriteOptions::if_not_changed for the full contract.

Source

pub fn if_not_exists(self, b: bool) -> Self

Write only when no file exists at the write path.

Refer to options::WriteOptions::if_not_exists for the full contract.

§Example
use bytes::Bytes;

let mut w = op.writer_with("path/to/file").if_not_exists(true).await?;
w.write(vec![0; 4096]).await?;
w.write(vec![1; 4096]).await?;
w.close().await?;
Source

pub fn user_metadata( self, data: impl IntoIterator<Item = (String, String)>, ) -> Self

Sets user metadata for this write request.

Refer to options::WriteOptions::user_metadata for more details.

§Example
use bytes::Bytes;

let mut w = op
    .writer_with("path/to/file")
    .user_metadata([
        ("content-type".to_string(), "text/plain".to_string()),
        ("author".to_string(), "OpenDAL".to_string()),
    ])
    .await?;
w.write(vec![0; 4096]).await?;
w.close().await?;
Source§

impl<F: Future<Output = Result<()>>> OperatorFuture<DeleteOptions, (), F>

Source

pub fn version(self, v: &str) -> Self

Delete the given version of the file instead of the current one.

Refer to options::DeleteOptions::version for the full contract.

Source

pub fn recursive(self, recursive: bool) -> Self

Enable recursive deletion.

Refer to options::DeleteOptions::recursive for the full contract.

Source

pub fn if_match(self, etag: &str) -> Self

Delete only when the file at the delete path has this exact ETag.

Refer to options::DeleteOptions::if_match for the full contract.

Source

pub fn if_none_match(self, etag: &str) -> Self

Delete only when the file at the delete path does not have this ETag.

Refer to options::DeleteOptions::if_none_match for the full contract.

Source

pub fn if_version_match(self, version: &str) -> Self

Delete only when the file at the delete path has this exact version.

Refer to options::DeleteOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, version: &str) -> Self

Delete only when the file at the delete path does not have this version.

Refer to options::DeleteOptions::if_version_not_match for the full contract.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Delete only when the file still has the identity recorded in metadata.

Refer to options::DeleteOptions::if_not_changed for the full contract.

Source§

impl<F: Future<Output = Result<Vec<Entry>>>> OperatorFuture<ListOptions, Vec<Entry>, F>

Source

pub fn limit(self, v: usize) -> Self

The limit passed to underlying service to specify the max results that could return per-request.

Users could use this to control the memory usage of list operation.

Source

pub fn start_after(self, v: &str) -> Self

The start_after passes to underlying service to specify the specified key to start listing from.

Source

pub fn recursive(self, v: bool) -> Self

The recursive is used to control whether the list operation is recursive.

  • If false, list operation will only list the entries under the given path.
  • If true, list operation will list all entries that starts with given path.

Default to false.

Source

pub fn versions(self, v: bool) -> Self

Controls whether the list operation should return file versions.

This function allows you to specify if the list operation, when executed, should include information about different versions of files, if versioning is supported and enabled.

If true, subsequent list operations will include version information for each file. If false, version information will be omitted from the list results.

Default to false

Source

pub fn deleted(self, v: bool) -> Self

Controls whether the list operation should include deleted files (or versions).

This function allows you to specify if the list operation, when executed, should include entries for files or versions that have been marked as deleted. This is particularly relevant in object storage systems that support soft deletion or versioning.

If true, subsequent list operations will include deleted files or versions. If false, deleted files or versions will be excluded from the list results.

Source§

impl<F: Future<Output = Result<Lister>>> OperatorFuture<ListOptions, Lister, F>

Source

pub fn limit(self, v: usize) -> Self

The limit passed to underlying service to specify the max results that could return per-request.

Users could use this to control the memory usage of list operation.

Source

pub fn start_after(self, v: &str) -> Self

The start_after passes to underlying service to specify the specified key to start listing from.

Source

pub fn recursive(self, v: bool) -> Self

The recursive is used to control whether the list operation is recursive.

  • If false, list operation will only list the entries under the given path.
  • If true, list operation will list all entries that starts with given path.

Default to false.

Source

pub fn versions(self, v: bool) -> Self

Controls whether the list operation should return file versions.

This function allows you to specify if the list operation, when executed, should include information about different versions of files, if versioning is supported and enabled.

If true, subsequent list operations will include version information for each file. If false, version information will be omitted from the list results.

Default to false

Source

pub fn deleted(self, v: bool) -> Self

Controls whether the list operation should include deleted files (or versions).

This function allows you to specify if the list operation, when executed, should include entries for files or versions that have been marked as deleted. This is particularly relevant in object storage systems that support soft deletion or versioning.

If true, subsequent list operations will include deleted files or versions. If false, deleted files or versions will be excluded from the list results.

Source§

impl<F: Future<Output = Result<Metadata>>> OperatorFuture<(ComposeOptions, Vec<(String, ComposeSourceOptions)>), Metadata, F>

Source

pub fn cache_control(self, value: &str) -> Self

Set destination Cache-Control metadata.

Source

pub fn content_type(self, value: &str) -> Self

Set destination Content-Type metadata.

Source

pub fn content_disposition(self, value: &str) -> Self

Set destination Content-Disposition metadata.

Source

pub fn content_encoding(self, value: &str) -> Self

Set destination Content-Encoding metadata.

Source

pub fn user_metadata(self, value: HashMap<String, String>) -> Self

Set destination user metadata.

Source

pub fn if_not_exists(self, value: bool) -> Self

Require a missing destination object.

Source

pub fn if_match(self, value: &str) -> Self

Require this destination ETag.

Source

pub fn if_none_match(self, value: &str) -> Self

Require a different destination ETag.

Source

pub fn if_version_match(self, value: &str) -> Self

Require this destination version.

Source

pub fn if_version_not_match(self, value: &str) -> Self

Require a different destination version.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Require the destination to retain the identity in metadata.

Source

pub fn concurrent(self, value: usize) -> Self

Set the maximum number of independent backend tasks.

Source§

impl<F: Future<Output = Result<Composer>>> OperatorFuture<ComposeOptions, Composer, F>

Source

pub fn cache_control(self, value: &str) -> Self

Set destination Cache-Control metadata.

Source

pub fn content_type(self, value: &str) -> Self

Set destination Content-Type metadata.

Source

pub fn content_disposition(self, value: &str) -> Self

Set destination Content-Disposition metadata.

Source

pub fn content_encoding(self, value: &str) -> Self

Set destination Content-Encoding metadata.

Source

pub fn user_metadata(self, value: HashMap<String, String>) -> Self

Set destination user metadata.

Source

pub fn if_not_exists(self, value: bool) -> Self

Require a missing destination object.

Source

pub fn if_match(self, value: &str) -> Self

Require this destination ETag.

Source

pub fn if_none_match(self, value: &str) -> Self

Require a different destination ETag.

Source

pub fn if_version_match(self, value: &str) -> Self

Require this destination version.

Source

pub fn if_version_not_match(self, value: &str) -> Self

Require a different destination version.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Require the destination to retain the identity in metadata.

Source

pub fn concurrent(self, value: usize) -> Self

Set the maximum number of independent backend tasks.

Source§

impl<F: Future<Output = Result<Metadata>>> OperatorFuture<(CopyOptions, String), Metadata, F>

Source

pub fn if_not_exists(self, v: bool) -> Self

Copy only when no file exists at the destination path.

Refer to options::CopyOptions::if_not_exists for the full contract.

§Example

let _ = op
    .copy_with("source/path", "target/path")
    .if_not_exists(true)
    .await?;
Source

pub fn if_match(self, etag: &str) -> Self

Copy only when the destination file has this exact ETag.

Refer to options::CopyOptions::if_match for the full contract.

Source

pub fn if_none_match(self, etag: &str) -> Self

Copy only when the destination file does not have this ETag.

Refer to options::CopyOptions::if_none_match for the full contract.

Source

pub fn if_version_match(self, version: &str) -> Self

Copy only when the destination file has this exact version.

Refer to options::CopyOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, version: &str) -> Self

Copy only when the destination file does not have this version.

Refer to options::CopyOptions::if_version_not_match for the full contract.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Copy only when the destination file still has the identity recorded in metadata.

Refer to options::CopyOptions::if_not_changed for the full contract.

Source

pub fn source_version(self, version: impl Into<String>) -> Self

Copy from this source file version instead of the current one.

Refer to options::CopyOptions::source_version for the full contract.

Source

pub fn concurrent(self, v: usize) -> Self

Sets concurrent copy operations for this copy.

Refer to options::CopyOptions::concurrent for more details.

Source

pub fn chunk(self, v: usize) -> Self

Sets chunk size for segmented copy operations.

Refer to options::CopyOptions::chunk for more details.

Source

pub fn source_content_length_hint(self, v: u64) -> Self

Sets known source content length as a hint for this copy request.

Refer to options::CopyOptions::source_content_length_hint for more details.

Source§

impl<F: Future<Output = Result<Copier>>> OperatorFuture<(CopyOptions, String), Copier, F>

Source

pub fn if_not_exists(self, v: bool) -> Self

Copy only when no file exists at the destination path.

Refer to options::CopyOptions::if_not_exists for the full contract.

Source

pub fn if_match(self, etag: &str) -> Self

Copy only when the destination file has this exact ETag.

Refer to options::CopyOptions::if_match for the full contract.

Source

pub fn if_none_match(self, etag: &str) -> Self

Copy only when the destination file does not have this ETag.

Refer to options::CopyOptions::if_none_match for the full contract.

Source

pub fn if_version_match(self, version: &str) -> Self

Copy only when the destination file has this exact version.

Refer to options::CopyOptions::if_version_match for the full contract.

Source

pub fn if_version_not_match(self, version: &str) -> Self

Copy only when the destination file does not have this version.

Refer to options::CopyOptions::if_version_not_match for the full contract.

Source

pub fn if_not_changed(self, metadata: &Metadata) -> Self

Copy only when the destination file still has the identity recorded in metadata.

Refer to options::CopyOptions::if_not_changed for the full contract.

Source

pub fn source_version(self, version: impl Into<String>) -> Self

Copy from this source file version instead of the current one.

Refer to options::CopyOptions::source_version for the full contract.

Source

pub fn source_content_length_hint(self, v: u64) -> Self

Sets known source content length as a hint for this copier.

Refer to options::CopyOptions::source_content_length_hint for more details.

Source

pub fn concurrent(self, v: usize) -> Self

Sets concurrent copy operations for this copier.

Refer to options::CopyOptions::concurrent for more details.

Source

pub fn chunk(self, v: usize) -> Self

Sets chunk size for segmented copy operations.

Refer to options::CopyOptions::chunk for more details.

Source§

impl<F: Future<Output = Result<()>>> OperatorFuture<(RenameOptions, String), (), F>

Source

pub fn if_not_exists(self, v: bool) -> Self

Rename only when no file exists at the destination path.

Refer to options::RenameOptions::if_not_exists for the full contract.

§Example
use opendal_core::Operator;
use opendal_core::Result;

async fn rename_with_options(op: Operator) -> Result<()> {
    op.rename_with("source/path", "target/path")
        .if_not_exists(true)
        .await?;
    Ok(())
}
Source§

impl<F: Future<Output = Result<()>>> OperatorFuture<RestoreOptions, (), F>

Source

pub fn version(self, version: impl Into<String>) -> Self

Restore this historical version as the current version.

Refer to options::RestoreOptions::version for the full contract.

Source

pub fn if_not_exists(self, if_not_exists: bool) -> Self

Restore the selected version only when no file currently exists at the restore path.

Refer to options::RestoreOptions::if_not_exists for the full contract.

Trait Implementations§

Source§

impl<I, O, F> IntoFuture for OperatorFuture<I, O, F>
where F: Future<Output = Result<O>>,

Source§

type Output = Result<O, Error>

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. Read more

Auto Trait Implementations§

§

impl<I, O, F> !RefUnwindSafe for OperatorFuture<I, O, F>

§

impl<I, O, F> !UnwindSafe for OperatorFuture<I, O, F>

§

impl<I, O, F> Freeze for OperatorFuture<I, O, F>
where I: Freeze, fn(OperationContext, Arc<dyn ServiceDyn>, String, I) -> F: Freeze,

§

impl<I, O, F> Send for OperatorFuture<I, O, F>
where I: Send, fn(OperationContext, Arc<dyn ServiceDyn>, String, I) -> F: Send,

§

impl<I, O, F> Sync for OperatorFuture<I, O, F>
where I: Sync, fn(OperationContext, Arc<dyn ServiceDyn>, String, I) -> F: Sync,

§

impl<I, O, F> Unpin for OperatorFuture<I, O, F>
where I: Unpin, fn(OperationContext, Arc<dyn ServiceDyn>, String, I) -> F: Unpin,

§

impl<I, O, F> UnsafeUnpin for OperatorFuture<I, O, F>

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> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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