pub struct Object { /* private fields */ }
Expand description
Handler for all object related operations.
Implementations
sourceimpl Object
impl Object
sourcepub fn reader(&self) -> Reader
pub fn reader(&self) -> Reader
Create a new reader which can read the whole object.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let bs = "Hello, World!".as_bytes().to_vec();
op.object("test").writer().write_bytes(bs).await?;
// Read whole file.
let mut r = op.object("test").reader();
io::copy(&mut r, &mut io::sink()).await?;
Ok(())
}
sourcepub fn range_reader(&self, offset: u64, size: u64) -> Reader
pub fn range_reader(&self, offset: u64, size: u64) -> Reader
Create a new ranged reader which can only read data between [offset, offset+size).
Note
The input offset and size are not checked, callers could meet error while reading.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let bs = "Hello, World!".as_bytes().to_vec();
op.object("test").writer().write_bytes(bs).await?;
// Read within [1, 2) bytes.
let mut r = op.object("test").range_reader(1, 1);
io::copy(&mut r, &mut io::sink()).await?;
Ok(())
}
sourcepub fn offset_reader(&self, offset: u64) -> Reader
pub fn offset_reader(&self, offset: u64) -> Reader
Create a new offset reader which can read data since offset.
Note
The input offset is not checked, callers could meet error while reading.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let bs = "Hello, World!".as_bytes().to_vec();
op.object("test").writer().write_bytes(bs).await?;
// Read start offset 4.
let mut r = op.object("test").offset_reader(4);
io::copy(&mut r, &mut io::sink()).await?;
Ok(())
}
sourcepub fn limited_reader(&self, size: u64) -> Reader
pub fn limited_reader(&self, size: u64) -> Reader
Create a new limited reader which can only read limited data.
Note
The input size is not checked, callers could meet error while reading.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let bs = "Hello, World!".as_bytes().to_vec();
op.object("test").writer().write_bytes(bs).await?;
// Read within 8 bytes.
let mut r = op.object("test").limited_reader(8);
io::copy(&mut r, &mut io::sink()).await?;
Ok(())
}
sourcepub fn writer(&self) -> Writer
pub fn writer(&self) -> Writer
Create a new writer which can write data into the object.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let bs = "Hello, World!".as_bytes().to_vec();
op.object("test").writer().write_bytes(bs).await?;
Ok(())
}
sourcepub async fn delete(&self) -> Result<()>
pub async fn delete(&self) -> Result<()>
Delete current object.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let bs = "Hello, World!".as_bytes().to_vec();
op.object("test").delete().await?;
Ok(())
}
sourcepub async fn metadata(&self) -> Result<Metadata>
pub async fn metadata(&self) -> Result<Metadata>
Get current object’s metadata.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
use opendal::error::Kind;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
if let Err(e) = op.object("test").metadata().await {
if e.kind() == Kind::ObjectNotExist {
println!("object not exist")
}
}
Ok(())
}
sourcepub async fn metadata_cached(&mut self) -> Result<&Metadata>
pub async fn metadata_cached(&mut self) -> Result<&Metadata>
Use local cached metadata if possible.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
use opendal::error::Kind;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let mut o = op.object("test");
o.metadata_cached().await;
// The second call to metadata_cached will have no cost.
o.metadata_cached().await;
Ok(())
}
sourcepub async fn is_exist(&self) -> Result<bool>
pub async fn is_exist(&self) -> Result<bool>
Check if this object exist or not.
Example
use opendal::services::memory;
use anyhow::Result;
use futures::io;
use opendal::Operator;
use opendal::error::Kind;
#[tokio::main]
async fn main() -> Result<()> {
let op = Operator::new(memory::Backend::build().finish().await?);
let _ = op.object("test").is_exist().await?;
Ok(())
}
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Object
impl Send for Object
impl Sync for Object
impl Unpin for Object
impl !UnwindSafe for Object
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more