Trait rocket::request::FromSegments

source ·
pub trait FromSegments<'a>: Sized {
    type Error: Debug;

    // Required method
    fn from_segments(segments: Segments<'a>) -> 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§

source

type Error: Debug

The associated error to be returned when parsing fails.

Required Methods§

source

fn from_segments(segments: Segments<'a>) -> Result<Self, Self::Error>

Parses an instance of Self from many dynamic path parameter strings or returns an Error if one cannot be parsed.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a> FromSegments<'a> 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.

source§

impl<'a, T: FromSegments<'a>> FromSegments<'a> for Option<T>

§

type Error = !

source§

fn from_segments(segments: Segments<'a>) -> Result<Option<T>, !>

source§

impl<'a, T: FromSegments<'a>> FromSegments<'a> for Result<T, T::Error>

§

type Error = !

source§

fn from_segments(segments: Segments<'a>) -> Result<Result<T, T::Error>, !>

Implementors§

source§

impl<'a> FromSegments<'a> for Segments<'a>

§

type Error = !