pub trait FromSegments<'r>: Sized {
type Error: Debug;
// Required method
fn from_segments(segments: Segments<'r, Path>) -> Result<Self, Self::Error>;
}
Expand description
Trait to convert many dynamic path segment strings to a concrete value.
This is the ..
analog to FromParam
, and its functionality is identical
to it with one exception: this trait applies to segment parameters of the
form <param..>
, where param
is of some type T
that implements
FromSegments
. T::from_segments
is called to convert the matched segments
(via the Segments
iterator) into the implementing type.
§Provided Implementations
PathBuf
The PathBuf
implementation constructs a path from the segments iterator.
Each segment is percent-decoded. If a segment equals “..” before or after
decoding, the previous segment (if any) is omitted. For security purposes,
any other segments that begin with “*” or “.” are ignored. If a
percent-decoded segment results in invalid UTF8, an Err
is returned with
the Utf8Error
.
Required Associated Types§
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.
Implementations on Foreign Types§
Source§impl FromSegments<'_> for PathBuf
impl FromSegments<'_> for PathBuf
Creates a PathBuf
from a Segments
iterator. The returned PathBuf
is
percent-decoded. If a segment is equal to “..”, the previous segment (if
any) is skipped.
For security purposes, if a segment meets any of the following conditions,
an Err
is returned indicating the condition met:
- Decoded segment starts with any of:
.
(except..
),*
- Decoded segment ends with any of:
:
,>
,<
- Decoded segment contains any of:
/
- On Windows, decoded segment contains any of:
\
- Percent-encoding results in invalid UTF8.
As a result of these conditions, a PathBuf
derived via FromSegments
is
safe to interpolate within, or use as a suffix of, a path without additional
checks.