5 个版本
0.1.13 | 2024 年 2 月 21 日 |
---|---|
0.1.12 | 2024 年 2 月 21 日 |
0.1.11 | 2024 年 2 月 20 日 |
0.1.1 | 2024 年 2 月 20 日 |
0.1.0 | 2024 年 1 月 15 日 |
#20 in #building-block
10KB
131 行
GET_VEC
get_vec(...) 方法允许以 Vec<&str> 形式异步获取 URL 的请求,例如。
let api = API::new();
#[threads(2)]
api.get_vec(urls, DATA_PATH).await;
这将检索 urls vec 中的两个文件,并将它们下载到 "src/" 目录,使用 2 个异步线程。
包括 "header" 和 "threads" 宏;header 添加自定义头信息,threads 指定要打开的线程数。默认情况下,threads 设置为 1。
以下是一个示例
#[tokio::main]
fn main() {
let mut api = API::new(); // runner required to be mut for header changes
let SAVE_PATH: &str = "./data";
// Visit the first api, needing only the User-Agent (with only 1 thread)
//
let api_1 = vec![
"www.endpoint_1.xml",
"www.endpoint_2.json"
];
#[header("User-Agent", "example@email_domain.com")]
api.get_vec(api_1, ).await;
// Visit the second api, now needing an API key; referred to as "API-Token"
// (Opening 2 threads at once)
//
let api_2 = vec![
"www.endpoint_3.xml",
"www.endpoint_4.csv"
];
#[threads(2)]
#[header("User-Agent", "example@email_domain.com")]
#[header("API-Token", "XXXXXXXXX")]
api.get_vec(api_2, ).await;
}
待办事项!
- request_per_second 包装器 + proc_macro
- 添加日志记录器(带布尔选项)
- 添加 thiserror
- 确定是否可以使用泛型类型定义 get_vec
依赖项
~7–19MB
~282K SLoC