Trait OutgoingBody

Source
pub trait OutgoingBody {
    // Required method
    fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>;
}
Expand description

Trait for implementing a type that can be written to an outgoing HTTP response body.

When implementing this trait, you should write your type to the provided OutputStream and then drop the stream. Finally, you should call wasi::http::types::OutgoingBody::finish to finish the body and return the result.

This trait is already implemented for common Rust types, and it’s implemented for wasi::http::types::IncomingBody and wasi::io::streams::InputStream as well. This enables using any stream from a Wasm interface as an outgoing body.

use std::io::Write;

impl wasmcloud_component::http::OutgoingBody for Vec<u8> {
   fn write(
       self,
       body: wasi::http::types::OutgoingBody,
       mut stream: wasi::io::streams::OutputStream,
   ) -> std::io::Result<()> {
       stream.write_all(&self)?;
       drop(stream);
       wasi::http::types::OutgoingBody::finish(body, None)
           .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))
    }
}

Required Methods§

Source

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Implementations on Foreign Types§

Source§

impl OutgoingBody for &str

Source§

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Source§

impl OutgoingBody for &[u8]

Source§

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Source§

impl OutgoingBody for ()

Source§

fn write(self, _body: OutgoingBody, _stream: OutputStream) -> Result<()>

Source§

impl OutgoingBody for Box<str>

Source§

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Source§

impl OutgoingBody for Box<[u8]>

Source§

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Source§

impl OutgoingBody for String

Source§

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Source§

impl OutgoingBody for Vec<u8>

Source§

fn write(self, body: OutgoingBody, stream: OutputStream) -> Result<()>

Implementors§

Source§

impl OutgoingBody for wasmcloud_component::wasi::http::types::IncomingBody

Source§

impl OutgoingBody for InputStream

Source§

impl OutgoingBody for wasmcloud_component::http::IncomingBody

Source§

impl<T: Read> OutgoingBody for ReadBody<T>