pub trait FromRes<Encoding, Response, CustErr>: Sized {
    // Required method
    fn from_res(
        res: Response,
    ) -> impl Future<Output = Result<Self, ServerFnError<CustErr>>> + Send;
}
Expand description

Deserializes the data type from an HTTP response.

Implementations use the methods of the ClientRes trait to extract data from a response. They are often quite short, usually consisting of just two steps:

  1. Extracting a String, Bytes, or a Stream from the response body.
  2. Deserializing the data type from that value.

For example, here’s the implementation for Json.

impl<CustErr, T, Response> FromRes<Json, Response, CustErr> for T
where
    Response: ClientRes<CustErr> + Send,
    T: DeserializeOwned + Send,
{
    async fn from_res(
        res: Response,
    ) -> Result<Self, ServerFnError<CustErr>> {
        // extracts the request body
        let data = res.try_into_string().await?;
        // and tries to deserialize it as JSON
        serde_json::from_str(&data)
            .map_err(|e| ServerFnError::Deserialization(e.to_string()))
    }
}

Required Methods§

Source

fn from_res( res: Response, ) -> impl Future<Output = Result<Self, ServerFnError<CustErr>>> + Send

Attempts to deserialize the outputs from a response.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<CustErr, Response> FromRes<Streaming, Response, CustErr> for ByteStream
where Response: ClientRes<CustErr> + Send,

Source§

impl<CustErr, Response> FromRes<StreamingText, Response, CustErr> for TextStream
where Response: ClientRes<CustErr> + Send,

Source§

impl<CustErr, T, Response> FromRes<Json, Response, CustErr> for T
where Response: ClientRes<CustErr> + Send, T: DeserializeOwned + Send,

Source§

impl<CustErr, T, Response> FromRes<StreamingJson, Response, CustErr> for JsonStream<T>
where Response: ClientRes<CustErr> + Send, T: DeserializeOwned,