aws_smithy_types::byte_stream

Struct FsBuilder

Source
pub struct FsBuilder { /* private fields */ }
Available on crate feature rt-tokio only.
Expand description

Builder for creating ByteStreams from a file/path, with full control over advanced options.

use aws_smithy_types::byte_stream::{ByteStream, Length};
use std::path::Path;
struct GetObjectInput {
    body: ByteStream
}

async fn bytestream_from_file() -> GetObjectInput {
    let bytestream = ByteStream::read_from()
        .path("docs/some-large-file.csv")
        // Specify the size of the buffer used to read the file (in bytes, default is 4096)
        .buffer_size(32_784)
        // Specify the length of the file used (skips an additional call to retrieve the size)
        .length(Length::UpTo(123_456))
        .build()
        .await
        .expect("valid path");
    GetObjectInput { body: bytestream }
}

Implementations§

Source§

impl FsBuilder

Source

pub fn new() -> Self

Create a new FsBuilder (using a default read buffer of 4096 bytes).

You must then call either file or path to specify what to read from.

Source

pub fn path(self, path: impl AsRef<Path>) -> Self

Sets the path to read from.

NOTE: The resulting ByteStream (after calling build) will be retryable. The returned ByteStream will provide a size hint when used as an HTTP body. If the request fails, the read will begin again by reloading the file handle.

Source

pub fn file(self, file: File) -> Self

Sets the file to read from.

NOTE: The resulting ByteStream (after calling build) will not be a retryable ByteStream. For a ByteStream that can be retried in the case of upstream failures, use FsBuilder::path.

Source

pub fn length(self, length: Length) -> Self

Specify the length to read (in bytes).

By pre-specifying the length, this API skips an additional call to retrieve the size from file-system metadata.

When used in conjunction with offset, allows for reading a single “chunk” of a file.

Source

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

Specify the size of the buffer used to read the file (in bytes).

Increasing the read buffer capacity to higher values than the default (4096 bytes) can result in a large reduction in CPU usage, at the cost of memory increase.

Source

pub fn offset(self, offset: u64) -> Self

Specify the offset to start reading from (in bytes)

When used in conjunction with length, allows for reading a single “chunk” of a file.

Source

pub async fn build(self) -> Result<ByteStream, Error>

Returns a ByteStream from this builder.

Trait Implementations§

Source§

impl Default for FsBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
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.