[][src]Struct isahc::Body

pub struct Body(_);

Contains the body of an HTTP request or response.

This type is used to encapsulate the underlying stream or region of memory where the contents of the body are stored. A Body can be created from many types of sources using the Into trait or one of its constructor functions.

Since the entire request life-cycle in Isahc is asynchronous, bodies must also be asynchronous. You can create a body from anything that implements AsyncRead, which Body itself also implements.

Implementations

impl Body[src]

pub const fn empty() -> Self[src]

Create a new empty body.

An empty body represents the absence of a body, which is semantically different than the presence of a body of zero length.

pub fn from_bytes(bytes: impl AsRef<[u8]>) -> Self[src]

Create a new body from bytes stored in memory.

The body will have a known length equal to the number of bytes given.

Examples

use isahc::Body;

// Create a body from a string.
let body = Body::from_bytes("hello world");

pub fn from_maybe_shared(bytes: impl AsRef<[u8]> + 'static) -> Self[src]

Attempt to create a new body from a shared Bytes buffer.

This will try to prevent a copy if the type passed is the type used internally, and will copy the data if it is not.

pub fn from_reader(read: impl AsyncRead + Send + Sync + 'static) -> Self[src]

Create a streaming body that reads from the given reader.

The body will have an unknown length. When used as a request body, chunked transfer encoding might be used to send the request.

pub fn from_reader_sized(
    read: impl AsyncRead + Send + Sync + 'static,
    length: u64
) -> Self
[src]

Create a streaming body with a known length.

If the size of the body is known in advance, such as with a file, then this function can be used to create a body that can determine its Content-Length while still reading the bytes asynchronously.

Giving a value for length that doesn't actually match how much data the reader will produce may result in errors when sending the body in a request.

pub fn is_empty(&self) -> bool[src]

Report if this body is empty.

pub fn len(&self) -> Option<u64>[src]

Get the size of the body, if known.

The value reported by this method is used to set the Content-Length for outgoing requests.

When coming from a response, this method will report the value of the Content-Length response header if present. If this method returns None then there's a good chance that the server used something like chunked transfer encoding to send the response body.

Since the length may be determined totally separately from the actual bytes, even if a value is returned it should not be relied on as always being accurate, and should be treated as a "hint".

pub fn reset(&mut self) -> bool[src]

If this body is repeatable, reset the body stream back to the start of the content. Returns false if the body cannot be reset.

Trait Implementations

impl AsyncRead for Body[src]

impl Debug for Body[src]

impl Default for Body[src]

impl From<&'static [u8]> for Body[src]

impl From<&'static str> for Body[src]

impl From<()> for Body[src]

impl<T: Into<Body>> From<Option<T>> for Body[src]

impl From<String> for Body[src]

impl From<Vec<u8>> for Body[src]

impl Read for Body[src]

Auto Trait Implementations

impl !RefUnwindSafe for Body

impl Send for Body

impl Sync for Body

impl Unpin for Body

impl !UnwindSafe for Body

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<R> AsyncReadExt for R where
    R: AsyncRead + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> WithSubscriber for T[src]