Skip to main content

Part

Struct Part 

Source
pub struct Part { /* private fields */ }
Available on crate feature 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

Source

pub fn text<V: Into<Cow<'static, str>>>(value: V) -> Self

Create a text part.

Source

pub fn bytes<B: Into<Bytes>>(value: B) -> Self

Create a part from raw bytes.

Source

pub fn stream<S, O, E>(stream: S) -> Self
where S: Stream<Item = Result<O, E>> + Send + 'static, O: Into<Bytes> + 'static, E: Into<BoxError> + 'static,

Create a streaming part. The content size is unknown unless set explicitly via with_content_size.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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§

Source§

impl Debug for Part

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> RamaFrom<T> for U
where U: From<T>,

Source§

fn rama_from(value: T) -> U

Source§

impl<T, U, CrateMarker> RamaInto<U, CrateMarker> for T
where U: RamaFrom<T, CrateMarker>,

Source§

fn rama_into(self) -> U

Source§

impl<T, U> RamaTryFrom<T> for U
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

Source§

fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>

Source§

impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for T
where U: RamaTryFrom<T, CrateMarker>,

Source§

type Error = <U as RamaTryFrom<T, CrateMarker>>::Error

Source§

fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more