Struct Storage

Source
pub struct Storage { /* 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

pub fn upload_object<B, O, T, P>( &self, bucket: B, object: O, payload: T, ) -> UploadObject<P, Crc32c>
where B: Into<String>, O: Into<String>, T: Into<Payload<P>>,

Upload an object using a local buffer.

If the data source does not implement Seek the client library must buffer uploaded data until this data is persisted in the service. This requires more memory in the client, and when the buffer grows too large, may require stalling the upload until the service can persist the data.

Use this function for data sources representing computations where it is expensive or impossible to restart said computation. This function is also useful when it is hard or impossible to predict the number of bytes emitted by a stream, even if restarting the stream is not too expensive.

§Example
let response = client
    .upload_object("projects/_/buckets/my-bucket", "my-object", "hello world")
    .send()
    .await?;
println!("response details={response:?}");
§Example
let response = client
    .upload_object("projects/_/buckets/my-bucket", "my-object", "hello world")
    .send_unbuffered()
    .await?;
println!("response details={response:?}");
§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
where B: Into<String>, O: Into<String>,

A simple download into a buffer.

§Parameters
  • bucket - the bucket name containing the object. In projects/_/buckets/{bucket_id} format.
  • object - the object name.
§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));

Trait Implementations§

Source§

impl Clone for Storage

Source§

fn clone(&self) -> Storage

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 Debug for Storage

Source§

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

Formats the value using the given formatter. Read more

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> 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
Source§

impl<T> ErasedDestructor for T
where T: 'static,