Storage

Struct Storage 

Source
pub struct Storage<S = DefaultStorage>
where S: Storage + 'static,
{ /* private fields */ }
Expand description

Implements a client for the Cloud Storage API.

§Example

let client = Storage::builder().build().await?;
// use `client` to make requests to Cloud Storage.

§Configuration

To configure Storage use the with_* methods in the type returned by builder(). The default configuration should work for most applications. Common configuration changes include

§Pooling and Cloning

Storage holds a connection pool internally, it is advised to create one and then reuse it. You do not need to wrap Storage in an Rc or Arc to reuse it, because it already uses an Arc internally.

§Service Description

The Cloud Storage API allows applications to read and write data through the abstractions of buckets and objects. For a description of these abstractions please see https://cloud.google.com/storage/docs.

Resources are named as follows:

  • Projects are referred to as they are defined by the Resource Manager API, using strings like projects/123456 or projects/my-string-id.

  • Buckets are named using string names of the form: projects/{project}/buckets/{bucket} For globally unique buckets, _ may be substituted for the project.

  • Objects are uniquely identified by their name along with the name of the bucket they belong to, as separate strings in this API. For example:

    bucket = "projects/_/buckets/my-bucket"
    object = "my-object/with/a/folder-like/name"

    Note that object names can contain / characters, which are treated as any other character (no special directory semantics).

Implementations§

Source§

impl Storage

Source

pub fn builder() -> ClientBuilder

Returns a builder for Storage.

§Example
let client = Storage::builder().build().await?;
Source§

impl<S> Storage<S>
where S: Storage + 'static,

Source

pub fn from_stub(stub: S) -> Self
where S: Storage + 'static,

Creates a new client from the provided stub.

The most common case for calling this function is in tests mocking the client’s behavior.

Source

pub fn write_object<B, O, T, P>( &self, bucket: B, object: O, payload: T, ) -> WriteObject<P, S>
where B: Into<String>, O: Into<String>, T: Into<Payload<P>>,

Write an object with data from any data source.

§Example
let response = client
    .write_object("projects/_/buckets/my-bucket", "my-object", "hello world")
    .send_buffered()
    .await?;
println!("response details={response:?}");
§Example
let response = client
    .write_object("projects/_/buckets/my-bucket", "my-object", "hello world")
    .send_unbuffered()
    .await?;
println!("response details={response:?}");

You can use many different types as the payload. For example, a string, a bytes::Bytes, a tokio::fs::File, or a custom type that implements the StreamingSource trait.

If your data source also implements Seek, prefer send_unbuffered() to start the write. Otherwise use send_buffered().

§Parameters
  • bucket - the bucket name containing the object. In projects/_/buckets/{bucket_id} format.
  • object - the object name.
  • payload - the object data.
Source

pub fn read_object<B, O>(&self, bucket: B, object: O) -> ReadObject<S>
where B: Into<String>, O: Into<String>,

Reads the contents of an object.

§Example
let mut resp = client
    .read_object("projects/_/buckets/my-bucket", "my-object")
    .send()
    .await?;
let mut contents = Vec::new();
while let Some(chunk) = resp.next().await.transpose()? {
  contents.extend_from_slice(&chunk);
}
println!("object contents={:?}", bytes::Bytes::from_owner(contents));
§Parameters
  • bucket - the bucket name containing the object. In projects/_/buckets/{bucket_id} format.
  • object - the object name.

Trait Implementations§

Source§

impl<S> Clone for Storage<S>
where S: Storage + 'static + Clone,

Source§

fn clone(&self) -> Storage<S>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<S> Debug for Storage<S>
where S: Storage + 'static + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<S> Freeze for Storage<S>

§

impl<S = Storage> !RefUnwindSafe for Storage<S>

§

impl<S> Send for Storage<S>

§

impl<S> Sync for Storage<S>

§

impl<S> Unpin for Storage<S>

§

impl<S = Storage> !UnwindSafe for Storage<S>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<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