gpt4 book ai didi

rust - 在 Rust 中解析 URL 和函数链

转载 作者:行者123 更新时间:2023-12-03 11:30:04 27 4
gpt4 key购买 nike

我刚刚开始使用 Rust 编程。

我正在尝试获取 URL 的最后一部分,例如,下面的 URL 我想获取“ 资源 ”部分:


http://example.com/some_path1/some_path2/resource


我现在的代码是:

let parsed = Url::parse(url).unwrap();
let segments = parsed.path_segments().map(|c| c.collect::<Vec<_>>()).unwrap();
let the_resource = segments.last().unwrap();


必须有一种更优雅的方式来做到这一点。

1)我如何更优雅地写这个?

2)有没有办法只使用1个局部变量?

就像是:

// This of course does not compile because the returns are a mix of Options and Results
// But the question is, is there a way to chain the function calls (pipes?)

let the_resource = Url::parse(url)
.path_segments()
.map(|c| c.collect::<Vec<_>>())
.last()
.unwrap();


提前致谢

最佳答案

你觉得像这样吗?

extern crate url;

fn get_last(url: &str) -> Result<String, &str> {
url::Url::parse(url)
.map_err(|_| "Unable to parse")?
.path_segments()
.ok_or("No segments")?
.last()
.ok_or("No items")
.map(String::from)
}

fn main() {
println!("{:?}", get_last("http://zeljic.com/how/to/parse/url/in/rust"));
}


Playground

关于rust - 在 Rust 中解析 URL 和函数链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61177558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com