fetch_data 使用实例
Fetch-Data 库可以快速检查本地数据目录,然后下载所需文件。它总是通过哈希验证本地文件和下载的文件。它可以轻松下载大小样本文件。例如,这里我们从 GitHub 下载一个基因组学文件(如果尚未下载)。然后我们打印现在本地文件的大小。
use fetch_data::sample_file;
let path = sample_file("small.fam")?;
println!("{}", std::fs::metadata(path)?.len()); // Prints 85
它有如下特征
- 线程安全——允许它与 Rust 的多线程测试框架一起使用。
- 受到 Python 流行的Pooch和我们的 PySnpTools文件缓存模块的启发。
- 使用异步运行时例如 Tokio(使用 ureq 通过阻塞 I/O 下载文件)。
推荐使用方法:
- 创建一个registry.txt包含以空格分隔的文件列表及其哈希值的文件。
- 创建一个 FetchData 读取 registry.txt 文件的全局静态实例。赋予它: 1、文件 URL 根目录; 2、一个环境变量,告诉存储文件的本地数据目录 3、qualifier, organization, and application 用于在未设置环境变量时创建本地数据目录。有关详细信息,请参阅 crate ProjectsDir。
- 如下所示,定义一个公共 sample_file 函数,该函数接受一个文件名并返回一个 Result 包含下载文件的路径的函数
use fetch_data::{ctor, FetchData, FetchDataError};
use std::path::{Path, PathBuf};
#[ctor]
static STATIC_FETCH_DATA: FetchData = FetchData::new(
include_str!("../registry.txt"),
"https://raw.githubusercontent.com/CarlKCarlK/fetch-data/main/tests/data/",
"BAR_APP_DATA_DIR", // env_key
"com", // qualifier
"Foo Corp", // organization
"Bar App", // application
);
/// Download a data file.
pub fn sample_file<P: AsRef<Path>>(path: P) -> Result<PathBuf, FetchDataError> {
STATIC_FETCH_DATA.fetch_file(path)
}
您现在可以sample_file根据需要使用您的函数下载文件。
- https://docs.rs/fetch-data/latest/fetch_data/
Rust China 2021~2022 大会即将召开 @Mike Tang
大家盼望已久的好消息终于来到了! Rust中文社区大会策划小组已经决定,将大会由线下转移至线上进行。时间为2022年7月30日(周六)或 31日(周日),具体提前通知。线上的具体形式还在策划和准备中,有最新消息,会即时通报给大家。 2021年在活动行上售卖的门票已经做了退款处理。如果有谁还没收到退款的,请留言与我们联系。这次大会改为纯线上了,失去了线下大会的面基优势,但我们会努力通过扩展线上的形式,尽量达到大家互动的效果。 敬请期待。
- https://rustcc.cn/article?id=48c7f26a-8014-402f-9638-ec0794a61ad4
From 日报小组 侯盛鑫 坏姐姐
社区学习交流平台订阅:
1
共 0 条评论, 1 页
评论区
写评论还没有评论