【Rust日报】2022-07-01 - fetch_data 使用实例

2022-11-28 15:18:52 浏览数 (2)

fetch_data 使用实例

Fetch-Data 库可以快速检查本地数据目录,然后下载所需文件。它总是通过哈希验证本地文件和下载的文件。它可以轻松下载大小样本文件。例如,这里我们从 GitHub 下载一个基因组学文件(如果尚未下载)。然后我们打印现在本地文件的大小。

代码语言:javascript复制
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 包含下载文件的路径的函数
代码语言:javascript复制
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 日报小组 侯盛鑫 坏姐姐

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss
  • 微信公众号:Rust 语言中文社区

0 人点赞