pub struct Part { /* private fields */ }multipart only.Expand description
A single part of a multipart Form.
Built via text, bytes,
stream, or file. Customise with
with_file_name,
try_with_mime_str,
with_content_size, or
with_headers.
Implementations§
Source§impl Part
impl Part
Sourcepub fn stream<S, O, E>(stream: S) -> Self
pub fn stream<S, O, E>(stream: S) -> Self
Create a streaming part. The content size is unknown unless set
explicitly via with_content_size.
Sourcepub async fn file<P: AsRef<Path>>(path: P) -> Result<Self>
pub async fn file<P: AsRef<Path>>(path: P) -> Result<Self>
Create a part from a file. The filename is taken from the path’s last
component, the MIME type is inferred from the extension (falling back
to application/octet-stream), and the content size is read from
filesystem metadata.
Filenames are converted to UTF-8 using lossy replacement of any
non-UTF-8 bytes (relevant on Unix where filenames are arbitrary
byte sequences). If you need to preserve non-UTF-8 names verbatim,
build the Part yourself with Part::file and override the
name via Part::with_file_name from a known UTF-8 source.
The reported content_size is taken from filesystem metadata at
the moment of the call. Concurrent writers that change the file
size between this call and the body being sent can desynchronise
the advertised Content-Length from the actually-streamed bytes;
avoid passing a path to a file that may be modified mid-flight.
Sourcepub fn with_file_name(self, file_name: impl Into<Cow<'static, str>>) -> Self
pub fn with_file_name(self, file_name: impl Into<Cow<'static, str>>) -> Self
Filename used in the part’s Content-Disposition header.
Accepts anything that converts into Cow<'static, str> —
&'static str literals, owned String, or an explicit
Cow::Owned/Cow::Borrowed.
Sourcepub fn set_file_name(
&mut self,
file_name: impl Into<Cow<'static, str>>,
) -> &mut Self
pub fn set_file_name( &mut self, file_name: impl Into<Cow<'static, str>>, ) -> &mut Self
Filename used in the part’s Content-Disposition header.
Accepts anything that converts into Cow<'static, str> —
&'static str literals, owned String, or an explicit
Cow::Owned/Cow::Borrowed.
Sourcepub fn maybe_with_mime(self, mime: Option<Mime>) -> Self
pub fn maybe_with_mime(self, mime: Option<Mime>) -> Self
The part’s Content-Type, as a parsed Mime.
with_*/set_* set, without_*/unset_* clear any
previously-set value.
Sourcepub fn maybe_set_mime(&mut self, mime: Option<Mime>) -> &mut Self
pub fn maybe_set_mime(&mut self, mime: Option<Mime>) -> &mut Self
The part’s Content-Type, as a parsed Mime.
with_*/set_* set, without_*/unset_* clear any
previously-set value.
Sourcepub fn with_mime(self, mime: Mime) -> Self
pub fn with_mime(self, mime: Mime) -> Self
The part’s Content-Type, as a parsed Mime.
with_*/set_* set, without_*/unset_* clear any
previously-set value.
Sourcepub fn set_mime(&mut self, mime: Mime) -> &mut Self
pub fn set_mime(&mut self, mime: Mime) -> &mut Self
The part’s Content-Type, as a parsed Mime.
with_*/set_* set, without_*/unset_* clear any
previously-set value.
Sourcepub fn without_mime(self) -> Self
pub fn without_mime(self) -> Self
The part’s Content-Type, as a parsed Mime.
with_*/set_* set, without_*/unset_* clear any
previously-set value.
Sourcepub fn unset_mime(&mut self) -> &mut Self
pub fn unset_mime(&mut self) -> &mut Self
The part’s Content-Type, as a parsed Mime.
with_*/set_* set, without_*/unset_* clear any
previously-set value.
Sourcepub fn try_with_mime_str(self, mime_str: &str) -> Result<Self, FromStrError>
pub fn try_with_mime_str(self, mime_str: &str) -> Result<Self, FromStrError>
The part’s Content-Type parsed from a string such as
"image/png". Generates try_with_mime_str /
try_set_mime_str companions returning Result.
Sourcepub fn try_set_mime_str(
&mut self,
mime_str: &str,
) -> Result<&mut Self, FromStrError>
pub fn try_set_mime_str( &mut self, mime_str: &str, ) -> Result<&mut Self, FromStrError>
The part’s Content-Type parsed from a string such as
"image/png". Generates try_with_mime_str /
try_set_mime_str companions returning Result.
Sourcepub fn maybe_with_content_size(self, size: Option<u64>) -> Self
pub fn maybe_with_content_size(self, size: Option<u64>) -> Self
Known content size in bytes. For streaming parts this allows the
surrounding Form to advertise a Content-Length.
Sourcepub fn maybe_set_content_size(&mut self, size: Option<u64>) -> &mut Self
pub fn maybe_set_content_size(&mut self, size: Option<u64>) -> &mut Self
Known content size in bytes. For streaming parts this allows the
surrounding Form to advertise a Content-Length.
Sourcepub fn with_content_size(self, size: u64) -> Self
pub fn with_content_size(self, size: u64) -> Self
Known content size in bytes. For streaming parts this allows the
surrounding Form to advertise a Content-Length.
Sourcepub fn set_content_size(&mut self, size: u64) -> &mut Self
pub fn set_content_size(&mut self, size: u64) -> &mut Self
Known content size in bytes. For streaming parts this allows the
surrounding Form to advertise a Content-Length.
Sourcepub fn without_content_size(self) -> Self
pub fn without_content_size(self) -> Self
Known content size in bytes. For streaming parts this allows the
surrounding Form to advertise a Content-Length.
Sourcepub fn unset_content_size(&mut self) -> &mut Self
pub fn unset_content_size(&mut self) -> &mut Self
Known content size in bytes. For streaming parts this allows the
surrounding Form to advertise a Content-Length.
Sourcepub fn with_headers(self, headers: HeaderMap) -> Self
pub fn with_headers(self, headers: HeaderMap) -> Self
Replace the part’s headers (other than Content-Disposition and
Content-Type, which are derived from the part’s metadata).
RFC 7578 §4.8 states that headers other than Content-Disposition,
Content-Type, and (legacy) Content-Transfer-Encoding “MUST NOT be
included and MUST be ignored” by receivers. Custom headers are
allowed here for compatibility with non-standard receivers, but
strictly conforming peers will silently drop them.
Sourcepub fn set_headers(&mut self, headers: HeaderMap) -> &mut Self
pub fn set_headers(&mut self, headers: HeaderMap) -> &mut Self
Replace the part’s headers (other than Content-Disposition and
Content-Type, which are derived from the part’s metadata).
RFC 7578 §4.8 states that headers other than Content-Disposition,
Content-Type, and (legacy) Content-Transfer-Encoding “MUST NOT be
included and MUST be ignored” by receivers. Custom headers are
allowed here for compatibility with non-standard receivers, but
strictly conforming peers will silently drop them.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Part
impl !RefUnwindSafe for Part
impl !Sync for Part
impl !UnwindSafe for Part
impl Send for Part
impl Unpin for Part
impl UnsafeUnpin for Part
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more