Trait axum_typed_multipart::TryFromChunks
source · pub trait TryFromChunks: Sized {
// Required method
fn try_from_chunks<'async_trait>(
chunks: impl 'async_trait + Stream<Item = Result<Bytes, TypedMultipartError>> + Send + Sync + Unpin,
metadata: FieldMetadata
) -> Pin<Box<dyn Future<Output = Result<Self, TypedMultipartError>> + Send + 'async_trait>>
where Self: 'async_trait;
}
Expand description
Types that can be created from a Stream of Bytes.
All fields for a given struct must implement either this trait or the TryFromField trait directly to be able to derive the TryFromMultipart trait.
Example
use axum::async_trait;
use axum::body::Bytes;
use axum_typed_multipart::{FieldMetadata, TryFromChunks, TypedMultipartError};
use futures_util::stream::Stream;
struct Data(String);
#[async_trait]
impl TryFromChunks for Data {
async fn try_from_chunks(
chunks: impl Stream<Item = Result<Bytes, TypedMultipartError>> + Send + Sync + Unpin,
metadata: FieldMetadata,
) -> Result<Self, TypedMultipartError> {
let string = String::try_from_chunks(chunks, metadata).await?;
Ok(Data(string))
}
}
Required Methods§
sourcefn try_from_chunks<'async_trait>(
chunks: impl 'async_trait + Stream<Item = Result<Bytes, TypedMultipartError>> + Send + Sync + Unpin,
metadata: FieldMetadata
) -> Pin<Box<dyn Future<Output = Result<Self, TypedMultipartError>> + Send + 'async_trait>>where
Self: 'async_trait,
fn try_from_chunks<'async_trait>(
chunks: impl 'async_trait + Stream<Item = Result<Bytes, TypedMultipartError>> + Send + Sync + Unpin,
metadata: FieldMetadata
) -> Pin<Box<dyn Future<Output = Result<Self, TypedMultipartError>> + Send + 'async_trait>>where
Self: 'async_trait,
Object Safety§
This trait is not object safe.