17 个版本
0.6.1 | 2023 年 2 月 25 日 |
---|---|
0.6.0 | 2022 年 12 月 19 日 |
0.5.3 | 2022 年 3 月 7 日 |
0.5.1 | 2021 年 3 月 30 日 |
0.1.0 | 2019 年 12 月 30 日 |
#111 in HTTP 客户端
18,859 每月下载次数
用于 9 个 Crates (6 直接)
79KB
1.5K SLoC
rust-cached-path
cached-path
的理念是为访问本地和远程文件提供统一的简单接口。这可以用于需要访问文件而不关心其位置的其它 API。
此库基于 Python 库 allenai/cached_path
。
安装
cached-path
既可以作为库也可以作为命令行工具使用。要将 cached-path
安装为命令行工具,请运行
cargo install --features build-binary cached-path
用法
对于远程资源,cached-path
会下载并缓存资源,使用 ETAG 知道何时更新缓存。返回的路径是最新缓存的本地路径
use cached_path::cached_path;
let path = cached_path(
"https://github.com/epwalsh/rust-cached-path/blob/main/README.md"
).unwrap();
assert!(path.is_file());
# From the command line:
$ cached-path https://github.com/epwalsh/rust-cached-path/blob/main/README.md
/tmp/cache/055968a99316f3a42e7bcff61d3f590227dd7b03d17e09c41282def7c622ba0f.efa33e7f611ef2d163fea874ce614bb6fa5ab2a9d39d5047425e39ebe59fe782
对于本地文件,返回的路径只是提供的原始路径
use cached_path::cached_path;
let path = cached_path("README.md").unwrap();
assert_eq!(path.to_str().unwrap(), "README.md");
# From the command line:
$ cached-path README.md
README.md
对于如 *.tar.gz
文件这样的归档资源,cached-path
也可以自动提取文件
use cached_path::{cached_path_with_options, Options};
let path = cached_path_with_options(
"https://raw.githubusercontent.com/epwalsh/rust-cached-path/main/test_fixtures/utf-8_sample/archives/utf-8.tar.gz",
&Options::default().extract(),
).unwrap();
assert!(path.is_dir());
# From the command line:
$ cached-path --extract https://raw.githubusercontent.com/epwalsh/rust-cached-path/main/test_fixtures/utf-8_sample/archives/utf-8.tar.gz
README.md
还可以使用 CacheBuilder
来自定义缓存位置、HTTP 客户端和其他选项,以构建自定义的 Cache
对象。如果您的应用程序多次调用 cached_path
,则建议这样做,因为它避免了每次调用都创建新的 HTTP 客户端的开销
use cached_path::Cache;
let cache = Cache::builder()
.dir(std::env::temp_dir().join("my-cache/"))
.connect_timeout(std::time::Duration::from_secs(3))
.build().unwrap();
let path = cache.cached_path("README.md").unwrap();
# From the command line:
$ cached-path --dir /tmp/my-cache/ --connect-timeout 3 README.md
README.md
依赖关系
~14–29MB
~486K SLoC