如何从 Rust 中的 url 中删除特定查询?

How to remove particular query from url in rust?

我一直在尝试从 URL 中删除特定查询(例如:“remove=me”),但似乎没有 API

use url::{Url};

fn main(){
    let mut url = Url::parse("https://www.example.com/foo?id=1&remove=me").unwrap();
    url.set_query(None); // This will remove all the query parameters
    println!("{}", URL);

   // expected result: https://www.example.com/foo?id=1
   // actual result: https://www.example.com/foo
}

的确,url 板条箱让它变得很尴尬。查询字符串只能追加或清除。编辑它需要一些技巧:生成一组过滤后的 name/value 对,然后清除并扩展查询字符串。

let mut url = Url::parse("https://www.example.com/foo?id=1&remove=me").unwrap();

let query: Vec<(String, String)> = url
    .query_pairs()
    .filter(|(name, _)| name != "remove")
    .map(|(name, value)| (name.into_owned(), value.into_owned()))
    .collect();
url.query_pairs_mut().clear().extend_pairs(&query);

println!("{}", url);

Playground