Struct body_image::BodySink [] [src]

pub struct BodySink { /* fields omitted */ }

A logical buffer of bytes, which may or may not be RAM resident, in the process of being written. This is the write-side corollary to BodyImage.

A BodySink is always in one of the following states, as a buffering strategy:

Ram : A vector of zero, one, or many discontinuous (AKA scattered) byte buffers in Random Access Memory. This state is also used to represent an empty body (without allocation).

FsWrite : Body being written to a (temporary) file.

Methods

impl BodySink
[src]

[src]

Create new empty instance, which does not pre-allocate. The state is Ram with a zero-capacity vector.

[src]

Create a new Ram instance by pre-allocating a vector of buffers based on the given size estimate in bytes, assuming 8 KiB buffers. With a size_estimate of 0, this is the same as empty.

[src]

Create a new Ram instance by pre-allocating a vector of the specified capacity.

[src]

Create a new instance in state FsWrite, using a new temporary file created in dir.

[src]

Return true if in state Ram.

[src]

Return true if body is empty.

[src]

Return the current length of body in bytes.

[src]

Save bytes by appending to Ram or writing to FsWrite file. When in state Ram this may be more efficient than write_all if Into<Bytes> doesn't copy.

[src]

Write all bytes to self. When in state FsWrite this is copy free and more optimal than save.

[src]

If Ram, convert to FsWrite by writing all bytes in RAM to a temporary file, created in dir. No-op if already FsWrite. Buffers are eagerly dropped as they are written. As a consequence, if any error result is returned (e.g. opening or writing to the file), self will be empty and in the Ram state. There is no practical recovery for the original body.

[src]

Consumes self, converts and returns as BodyImage ready for read.

Trait Implementations

impl Debug for BodySink
[src]

[src]

Formats the value using the given formatter. Read more

impl Default for BodySink
[src]

[src]

Returns the "default value" for a type. Read more

Auto Trait Implementations

impl Send for BodySink

impl Sync for BodySink