pub struct OperatorFuture<I, O, F>{ /* private fields */ }Expand description
Implementations§
Source§impl<F> OperatorFuture<StatOptions, Metadata, F>
impl<F> OperatorFuture<StatOptions, Metadata, F>
Sourcepub fn if_match(self, v: &str) -> OperatorFuture<StatOptions, Metadata, F>
pub fn if_match(self, v: &str) -> OperatorFuture<StatOptions, Metadata, F>
Set the If-Match for this operation.
Refer to options::StatOptions::if_match for more details.
Sourcepub fn if_none_match(self, v: &str) -> OperatorFuture<StatOptions, Metadata, F>
pub fn if_none_match(self, v: &str) -> OperatorFuture<StatOptions, Metadata, F>
Set the If-None-Match for this operation.
Refer to options::StatOptions::if_none_match for more details.
Sourcepub fn if_modified_since(
self,
v: Timestamp,
) -> OperatorFuture<StatOptions, Metadata, F>
pub fn if_modified_since( self, v: Timestamp, ) -> OperatorFuture<StatOptions, Metadata, F>
Set the If-Modified-Since for this operation.
Refer to options::StatOptions::if_modified_since for more details.
Sourcepub fn if_unmodified_since(
self,
v: Timestamp,
) -> OperatorFuture<StatOptions, Metadata, F>
pub fn if_unmodified_since( self, v: Timestamp, ) -> OperatorFuture<StatOptions, Metadata, F>
Set the If-Unmodified-Since for this operation.
Refer to options::StatOptions::if_unmodified_since for more details.
Sourcepub fn version(self, v: &str) -> OperatorFuture<StatOptions, Metadata, F>
pub fn version(self, v: &str) -> OperatorFuture<StatOptions, Metadata, F>
Set the version for this operation.
Refer to options::StatOptions::version for more details.
Source§impl<F> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
impl<F> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
Sourcepub fn override_content_disposition(
self,
v: &str,
) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
pub fn override_content_disposition( self, v: &str, ) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
Refer to options::StatOptions::override_content_disposition for more details.
Sourcepub fn override_cache_control(
self,
v: &str,
) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
pub fn override_cache_control( self, v: &str, ) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
Refer to options::StatOptions::override_cache_control for more details.
Sourcepub fn override_content_type(
self,
v: &str,
) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
pub fn override_content_type( self, v: &str, ) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
Refer to options::StatOptions::override_content_type for more details.
Sourcepub fn if_match(
self,
v: &str,
) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
pub fn if_match( self, v: &str, ) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
Refer to options::StatOptions::if_match for more details.
Sourcepub fn if_none_match(
self,
v: &str,
) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
pub fn if_none_match( self, v: &str, ) -> OperatorFuture<(StatOptions, Duration), PresignedRequest, F>
Refer to options::StatOptions::if_none_match for more details.
Source§impl<F> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
impl<F> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
Sourcepub fn override_content_disposition(
self,
v: &str,
) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
pub fn override_content_disposition( self, v: &str, ) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
Refer to options::ReadOptions::override_content_disposition for more details.
Sourcepub fn override_cache_control(
self,
v: &str,
) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
pub fn override_cache_control( self, v: &str, ) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
Refer to options::ReadOptions::override_cache_control for more details.
Sourcepub fn override_content_type(
self,
v: &str,
) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
pub fn override_content_type( self, v: &str, ) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
Refer to options::ReadOptions::override_content_type for more details.
Sourcepub fn if_match(
self,
v: &str,
) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
pub fn if_match( self, v: &str, ) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
Refer to options::ReadOptions::if_match for more details.
Sourcepub fn if_none_match(
self,
v: &str,
) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
pub fn if_none_match( self, v: &str, ) -> OperatorFuture<(ReadOptions, Duration), PresignedRequest, F>
Refer to options::ReadOptions::if_none_match for more details.
Source§impl<F> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
impl<F> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
Sourcepub fn content_type(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
pub fn content_type( self, v: &str, ) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
Refer to options::WriteOptions::content_type for more details.
Sourcepub fn content_disposition(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
pub fn content_disposition( self, v: &str, ) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
Refer to options::WriteOptions::content_disposition for more details.
Sourcepub fn content_encoding(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
pub fn content_encoding( self, v: &str, ) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
Refer to options::WriteOptions::content_encoding for more details.
Sourcepub fn cache_control(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
pub fn cache_control( self, v: &str, ) -> OperatorFuture<(WriteOptions, Duration), PresignedRequest, F>
Refer to options::WriteOptions::cache_control for more details.
Source§impl<F> OperatorFuture<ReadOptions, Buffer, F>
impl<F> OperatorFuture<ReadOptions, Buffer, F>
Sourcepub fn range(
self,
range: impl RangeBounds<u64>,
) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn range( self, range: impl RangeBounds<u64>, ) -> OperatorFuture<ReadOptions, Buffer, F>
Set range for this read request.
If we have a file with size n.
..means read bytes in range[0, n)of file.0..1024and..1024means read bytes in range[0, 1024)of file1024..means read bytes in range[1024, n)of file
let bs = op.read_with("path/to/file").range(0..1024).await?;Sourcepub fn concurrent(
self,
concurrent: usize,
) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn concurrent( self, concurrent: usize, ) -> OperatorFuture<ReadOptions, Buffer, F>
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?;Sourcepub fn chunk(self, chunk_size: usize) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn chunk(self, chunk_size: usize) -> OperatorFuture<ReadOptions, Buffer, F>
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?;Sourcepub fn version(self, v: &str) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn version(self, v: &str) -> OperatorFuture<ReadOptions, Buffer, F>
Set version for this read request.
This feature can be used to retrieve the data of a specified version of the given path.
If the version doesn’t exist, an error with kind ErrorKind::NotFound will be returned.
let mut bs = op.read_with("path/to/file").version(version).await?;Sourcepub fn if_match(self, v: &str) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn if_match(self, v: &str) -> OperatorFuture<ReadOptions, Buffer, F>
Set if_match for this read request.
This feature can be used to check if the file’s ETag matches the given ETag.
If file exists and it’s etag doesn’t match, an error with kind ErrorKind::ConditionNotMatch
will be returned.
use opendal_core::Operator;
let mut metadata = op.read_with("path/to/file").if_match(etag).await?;Sourcepub fn if_none_match(self, v: &str) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn if_none_match(self, v: &str) -> OperatorFuture<ReadOptions, Buffer, F>
Set if_none_match for this read request.
This feature can be used to check if the file’s ETag doesn’t match the given ETag.
If file exists and it’s etag match, an error with kind ErrorKind::ConditionNotMatch
will be returned.
use opendal_core::Operator;
let mut metadata = op.read_with("path/to/file").if_none_match(etag).await?;Sourcepub fn if_modified_since(
self,
v: impl Into<Timestamp>,
) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn if_modified_since( self, v: impl Into<Timestamp>, ) -> OperatorFuture<ReadOptions, Buffer, F>
§if_modified_since
Set if_modified_since for this read request.
This feature can be used to check if the file has been modified since the given timestamp.
If file exists and it hasn’t been modified since the specified time, an error with kind
ErrorKind::ConditionNotMatch will be returned.
use jiff::Timestamp;
use opendal_core::Operator;
let mut metadata = op.read_with("path/to/file").if_modified_since(time).await?;Sourcepub fn if_unmodified_since(
self,
v: impl Into<Timestamp>,
) -> OperatorFuture<ReadOptions, Buffer, F>
pub fn if_unmodified_since( self, v: impl Into<Timestamp>, ) -> OperatorFuture<ReadOptions, Buffer, F>
Set if_unmodified_since for this read request.
This feature can be used to check if the file hasn’t been modified since the given timestamp.
If file exists and it has been modified since the specified time, an error with kind
ErrorKind::ConditionNotMatch will be returned.
use jiff::Timestamp;
use opendal_core::Operator;
let mut metadata = op
.read_with("path/to/file")
.if_unmodified_since(time)
.await?;Source§impl<F> OperatorFuture<ReaderOptions, Reader, F>
impl<F> OperatorFuture<ReaderOptions, Reader, F>
Sourcepub fn version(self, v: &str) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn version(self, v: &str) -> OperatorFuture<ReaderOptions, Reader, F>
Set version for this reader.
This feature can be used to retrieve the data of a specified version of the given path.
If the version doesn’t exist, an error with kind ErrorKind::NotFound will be returned.
let mut r = op.reader_with("path/to/file").version(version).await?;Sourcepub fn concurrent(
self,
concurrent: usize,
) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn concurrent( self, concurrent: usize, ) -> OperatorFuture<ReaderOptions, Reader, F>
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?;Sourcepub fn chunk(
self,
chunk_size: usize,
) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn chunk( self, chunk_size: usize, ) -> OperatorFuture<ReaderOptions, Reader, F>
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?;Sourcepub fn gap(self, gap_size: usize) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn gap(self, gap_size: usize) -> OperatorFuture<ReaderOptions, Reader, F>
Controls the optimization strategy for range reads in Reader::fetch.
When performing range reads, if the gap between two requested ranges is smaller than
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.
In this example, if two requested ranges are separated by less than 1MiB, 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?;Sourcepub fn if_match(self, etag: &str) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn if_match(self, etag: &str) -> OperatorFuture<ReaderOptions, Reader, F>
Set if-match for this read request.
This feature can be used to check if the file’s ETag matches the given ETag.
If file exists and it’s etag doesn’t match, an error with kind ErrorKind::ConditionNotMatch
will be returned.
use opendal_core::Operator;
let mut r = op.reader_with("path/to/file").if_match(etag).await?;Sourcepub fn if_none_match(
self,
etag: &str,
) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn if_none_match( self, etag: &str, ) -> OperatorFuture<ReaderOptions, Reader, F>
Set if-none-match for this read request.
This feature can be used to check if the file’s ETag doesn’t match the given ETag.
If file exists and it’s etag match, an error with kind ErrorKind::ConditionNotMatch
will be returned.
use opendal_core::Operator;
let mut r = op.reader_with("path/to/file").if_none_match(etag).await?;Sourcepub fn if_modified_since(
self,
v: impl Into<Timestamp>,
) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn if_modified_since( self, v: impl Into<Timestamp>, ) -> OperatorFuture<ReaderOptions, Reader, F>
Set if-modified-since for this read request.
This feature can be used to check if the file has been modified since the given timestamp.
If file exists and it hasn’t been modified since the specified time, an error with kind
ErrorKind::ConditionNotMatch will be returned.
use jiff::Timestamp;
use opendal_core::Operator;
let mut r = op
.reader_with("path/to/file")
.if_modified_since(time)
.await?;Sourcepub fn if_unmodified_since(
self,
v: impl Into<Timestamp>,
) -> OperatorFuture<ReaderOptions, Reader, F>
pub fn if_unmodified_since( self, v: impl Into<Timestamp>, ) -> OperatorFuture<ReaderOptions, Reader, F>
Set if-unmodified-since for this read request.
This feature can be used to check if the file hasn’t been modified since the given timestamp.
If file exists and it has been modified since the specified time, an error with kind
ErrorKind::ConditionNotMatch will be returned.
use jiff::Timestamp;
use opendal_core::Operator;
let mut r = op
.reader_with("path/to/file")
.if_unmodified_since(time)
.await?;Source§impl<F> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
impl<F> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
Sourcepub fn append(
self,
v: bool,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn append( self, v: bool, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn chunk(
self,
v: usize,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn chunk( self, v: usize, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn concurrent(
self,
v: usize,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn concurrent( self, v: usize, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn cache_control(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn cache_control( self, v: &str, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn content_type(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn content_type( self, v: &str, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn content_disposition(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn content_disposition( self, v: &str, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn content_encoding(
self,
v: &str,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn content_encoding( self, v: &str, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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?;Sourcepub fn if_match(
self,
s: &str,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn if_match( self, s: &str, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
Sets If-Match header for this write request.
Refer to options::WriteOptions::if_match for more details.
§Example
use bytes::Bytes;
let _ = op
.write_with("path/to/file", vec![0; 4096])
.if_match("\"686897696a7c876b7e\"")
.await?;Sourcepub fn if_none_match(
self,
s: &str,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn if_none_match( self, s: &str, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
Sets If-None-Match header for this write request.
Refer to options::WriteOptions::if_none_match for more details.
§Example
use bytes::Bytes;
let _ = op
.write_with("path/to/file", vec![0; 4096])
.if_none_match("\"686897696a7c876b7e\"")
.await?;Sourcepub fn if_not_exists(
self,
b: bool,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn if_not_exists( self, b: bool, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
Sets the condition that write operation will succeed only if target does not exist.
Refer to options::WriteOptions::if_not_exists for more details.
§Example
use bytes::Bytes;
let _ = op
.write_with("path/to/file", vec![0; 4096])
.if_not_exists(true)
.await?;Sourcepub fn user_metadata(
self,
data: impl IntoIterator<Item = (String, String)>,
) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
pub fn user_metadata( self, data: impl IntoIterator<Item = (String, String)>, ) -> OperatorFuture<(WriteOptions, Buffer), Metadata, F>
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> OperatorFuture<WriteOptions, Writer, F>
impl<F> OperatorFuture<WriteOptions, Writer, F>
Sourcepub fn append(self, v: bool) -> OperatorFuture<WriteOptions, Writer, F>
pub fn append(self, v: bool) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn chunk(self, v: usize) -> OperatorFuture<WriteOptions, Writer, F>
pub fn chunk(self, v: usize) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn concurrent(self, v: usize) -> OperatorFuture<WriteOptions, Writer, F>
pub fn concurrent(self, v: usize) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn cache_control(self, v: &str) -> OperatorFuture<WriteOptions, Writer, F>
pub fn cache_control(self, v: &str) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn content_type(self, v: &str) -> OperatorFuture<WriteOptions, Writer, F>
pub fn content_type(self, v: &str) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn content_disposition(
self,
v: &str,
) -> OperatorFuture<WriteOptions, Writer, F>
pub fn content_disposition( self, v: &str, ) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn content_encoding(
self,
v: &str,
) -> OperatorFuture<WriteOptions, Writer, F>
pub fn content_encoding( self, v: &str, ) -> OperatorFuture<WriteOptions, Writer, F>
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?;Sourcepub fn if_match(self, s: &str) -> OperatorFuture<WriteOptions, Writer, F>
pub fn if_match(self, s: &str) -> OperatorFuture<WriteOptions, Writer, F>
Sets If-Match header for this write request.
Refer to options::WriteOptions::if_match for more details.
§Behavior
- If supported, the write operation will only succeed if the target’s ETag matches the specified value
- The value should be a valid ETag string
- Common values include:
- A specific ETag value like
"686897696a7c876b7e" *- Matches any existing resource
- A specific ETag value like
- If not supported, the value will be ignored
This operation provides conditional write functionality based on ETag matching, helping prevent unintended overwrites in concurrent scenarios.
§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?;Sourcepub fn if_none_match(self, s: &str) -> OperatorFuture<WriteOptions, Writer, F>
pub fn if_none_match(self, s: &str) -> OperatorFuture<WriteOptions, Writer, F>
Sets If-None-Match header for this write request.
Refer to options::WriteOptions::if_none_match for more details.
§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?;Sourcepub fn if_not_exists(self, b: bool) -> OperatorFuture<WriteOptions, Writer, F>
pub fn if_not_exists(self, b: bool) -> OperatorFuture<WriteOptions, Writer, F>
Sets the condition that write operation will succeed only if target does not exist.
Refer to options::WriteOptions::if_not_exists for more details.
§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?;Sourcepub fn user_metadata(
self,
data: impl IntoIterator<Item = (String, String)>,
) -> OperatorFuture<WriteOptions, Writer, F>
pub fn user_metadata( self, data: impl IntoIterator<Item = (String, String)>, ) -> OperatorFuture<WriteOptions, Writer, F>
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> OperatorFuture<DeleteOptions, (), F>
impl<F> OperatorFuture<DeleteOptions, (), F>
Sourcepub fn version(self, v: &str) -> OperatorFuture<DeleteOptions, (), F>
pub fn version(self, v: &str) -> OperatorFuture<DeleteOptions, (), F>
Change the version of this delete operation.
Sourcepub fn recursive(self, recursive: bool) -> OperatorFuture<DeleteOptions, (), F>
pub fn recursive(self, recursive: bool) -> OperatorFuture<DeleteOptions, (), F>
Enable recursive deletion.
Source§impl<F> OperatorFuture<ListOptions, Vec<Entry>, F>
impl<F> OperatorFuture<ListOptions, Vec<Entry>, F>
Sourcepub fn limit(self, v: usize) -> OperatorFuture<ListOptions, Vec<Entry>, F>
pub fn limit(self, v: usize) -> OperatorFuture<ListOptions, Vec<Entry>, F>
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.
Sourcepub fn start_after(self, v: &str) -> OperatorFuture<ListOptions, Vec<Entry>, F>
pub fn start_after(self, v: &str) -> OperatorFuture<ListOptions, Vec<Entry>, F>
The start_after passes to underlying service to specify the specified key to start listing from.
Sourcepub fn recursive(self, v: bool) -> OperatorFuture<ListOptions, Vec<Entry>, F>
pub fn recursive(self, v: bool) -> OperatorFuture<ListOptions, Vec<Entry>, F>
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.
Sourcepub fn versions(self, v: bool) -> OperatorFuture<ListOptions, Vec<Entry>, F>
pub fn versions(self, v: bool) -> OperatorFuture<ListOptions, Vec<Entry>, F>
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
Sourcepub fn deleted(self, v: bool) -> OperatorFuture<ListOptions, Vec<Entry>, F>
pub fn deleted(self, v: bool) -> OperatorFuture<ListOptions, Vec<Entry>, F>
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> OperatorFuture<ListOptions, Lister, F>
impl<F> OperatorFuture<ListOptions, Lister, F>
Sourcepub fn limit(self, v: usize) -> OperatorFuture<ListOptions, Lister, F>
pub fn limit(self, v: usize) -> OperatorFuture<ListOptions, Lister, F>
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.
Sourcepub fn start_after(self, v: &str) -> OperatorFuture<ListOptions, Lister, F>
pub fn start_after(self, v: &str) -> OperatorFuture<ListOptions, Lister, F>
The start_after passes to underlying service to specify the specified key to start listing from.
Sourcepub fn recursive(self, v: bool) -> OperatorFuture<ListOptions, Lister, F>
pub fn recursive(self, v: bool) -> OperatorFuture<ListOptions, Lister, F>
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.
Sourcepub fn versions(self, v: bool) -> OperatorFuture<ListOptions, Lister, F>
pub fn versions(self, v: bool) -> OperatorFuture<ListOptions, Lister, F>
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
Sourcepub fn deleted(self, v: bool) -> OperatorFuture<ListOptions, Lister, F>
pub fn deleted(self, v: bool) -> OperatorFuture<ListOptions, Lister, F>
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> OperatorFuture<(CopyOptions, String), (), F>
impl<F> OperatorFuture<(CopyOptions, String), (), F>
Sourcepub fn if_not_exists(
self,
v: bool,
) -> OperatorFuture<(CopyOptions, String), (), F>
pub fn if_not_exists( self, v: bool, ) -> OperatorFuture<(CopyOptions, String), (), F>
Sets the condition that copy operation will succeed only if target does not exist.
Refer to options::CopyOptions::if_not_exists for more details.
§Example
let _ = op
.copy_with("source/path", "target/path")
.if_not_exists(true)
.await?;Trait Implementations§
Source§impl<I, O, F> IntoFuture for OperatorFuture<I, O, F>
impl<I, O, F> IntoFuture for OperatorFuture<I, O, F>
Source§type IntoFuture = F
type IntoFuture = F
Source§fn into_future(self) -> <OperatorFuture<I, O, F> as IntoFuture>::IntoFuture
fn into_future(self) -> <OperatorFuture<I, O, F> as IntoFuture>::IntoFuture
Auto Trait Implementations§
impl<I, O, F> Freeze for OperatorFuture<I, O, F>where
I: Freeze,
impl<I, O, F> !RefUnwindSafe for OperatorFuture<I, O, F>
impl<I, O, F> Send for OperatorFuture<I, O, F>where
I: Send,
impl<I, O, F> Sync for OperatorFuture<I, O, F>where
I: Sync,
impl<I, O, F> Unpin for OperatorFuture<I, O, F>where
I: Unpin,
impl<I, O, F> !UnwindSafe for OperatorFuture<I, O, F>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.