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:
- Extracting a
String
,Bytes
, or aStream
from the response body. - 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§
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.