3 个版本
0.1.2 | 2023年6月8日 |
---|---|
0.1.1 | 2023年5月9日 |
0.1.0 | 2023年5月9日 |
#26 in #ok
15KB
85 行代码(不包括注释)
first-ok
这提供了一个函数 first_ok::get_first_ok_bounded
,它接受一个异步函数和一组项目。它将异步函数应用于所有项目,并返回第一个 Ok
结果。
// examples/port.rs
use anyhow::{anyhow, Context};
#[tokio::main]
fn main() -> anyhow::Result<()> {
let client = reqwest::Client::builder().build()?;
let items = (1024..=65535u16).map(move |elem| (elem, client.clone()));
let url = first_ok::get_first_ok_bounded(items, 0, move |(port, client)| async move {
let url = format!("http://127.0.0.1:{}", port);
let response = client.get(&url).send().await?;
if response.status().as_u16() != 200 {
return Err(anyhow!(format!("{}", response.status())));
}
Ok(url)
})
.await
.context("nothing reported")??;
println!("{}", url);
Ok(())
}
依赖项
~3–5MB
~84K SLoC