Skip to main content

UrlExt

Trait UrlExt 

Source
pub trait UrlExt: Sealed {
    // Required methods
    fn append_path(&mut self, path: impl AsRef<str>);
    fn query_builder(&mut self) -> QueryBuilder<'_>;
}
Expand description

Extension trait for Url to provide additional URL manipulation methods.

Required Methods§

Source

fn append_path(&mut self, path: impl AsRef<str>)

Appends a path segment to the URL’s path, handling slashes appropriately and preserving query parameters.

This always assumes the existing URL terminates with a directory, and the path you pass in is a separate directory or file segment.

§Examples
use typespec_client_core::http::{Url, UrlExt as _};

let mut url: Url = "https://contoso.com/foo?a=1".parse().unwrap();
url.append_path("bar");
assert_eq!(url.as_str(), "https://contoso.com/foo/bar?a=1");
Source

fn query_builder(&mut self) -> QueryBuilder<'_>

Returns a query builder for setting query parameters.

The builder allows setting multiple query parameters, overwriting any existing values with the same key. Call build() to apply the changes to the URL.

§Examples
use typespec_client_core::http::{Url, UrlExt as _};

let mut url: Url = "https://contoso.com?a=1&b=2".parse().unwrap();
let mut query_builder = url.query_builder();
query_builder
    .set_pair("a", "new_value")
    .set_pair("c", "3");
query_builder.build();
let params: Vec<_> = url.query_pairs().collect();
assert!(params.contains(&("a".into(), "new_value".into())));
assert!(params.contains(&("b".into(), "2".into())));
assert!(params.contains(&("c".into(), "3".into())));

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§