10 个版本
0.2.4 | 2023年12月26日 |
---|---|
0.2.3 | 2023年5月23日 |
0.2.2 | 2022年12月22日 |
0.2.1 | 2022年11月1日 |
0.1.2 | 2022年6月9日 |
#1 in #etag
用于 qiniu-sdk
53KB
1K SLoC
Qiniu-Etag
概览
根据输入数据计算七牛 Etag,适配 V1 和 V2 版本,同时提供阻塞接口和异步接口(异步接口需要启用 async
功能)
七牛 Etag 文档:https://developer.qiniu.com/kodo/1231/appendix
安装
不启用异步接口
[dependencies]
qiniu-etag = "0.2.1"
启用异步接口
[dependencies]
qiniu-etag = { version = "0.2.1", features = ["async"] }
代码示例
阻塞代码示例
Etag V1 计算示例
use qiniu_etag::{EtagV1, prelude::*};
let mut etag_v1 = EtagV1::new();
etag_v1.update(b"etag");
assert_eq!(etag_v1.finalize_fixed().as_slice(), b"FpLiADEaVoALPkdb8tJEJyRTXoe_");
Etag V1 计算输入流示例
use std::io::{copy, Cursor};
use qiniu_etag::{EtagV1, prelude::*};
let mut etag_v1 = EtagV1::new();
copy(&mut Cursor::new(b"etag"), &mut etag_v1)?;
assert_eq!(etag_v1.finalize_fixed().as_slice(), b"FpLiADEaVoALPkdb8tJEJyRTXoe_");
Etag V2 计算示例
use qiniu_etag::{EtagV2, prelude::*};
let mut etag_v2 = EtagV2::new();
etag_v2.update(b"hello");
etag_v2.update(b"world");
assert_eq!(etag_v2.finalize_fixed().as_slice(), b"ns56DcSIfBFUENXjdhsJTIvl3Rcu");
Etag V2 计算输入流示例
与 V1 不同的是,Etag V2 要求传入数据的分块方式
use qiniu_etag::etag_with_parts;
use std::io::Cursor;
assert_eq!(
etag_with_parts(
&mut Cursor::new(data_of_size(9 << 20)),
&[1 << 22, 1 << 22, 1 << 20]
)?,
"ljgVjMtyMsOgIySv79U8Qz4TrUO4",
);
异步代码示例
Etag V1 计算输入流示例
use futures::io::{copy, Cursor};
use qiniu_etag::{EtagV1, prelude::*};
let mut etag_v1 = EtagV1::new();
copy(&mut Cursor::new(b"etag"), &mut etag_v1).await?;
assert_eq!(etag_v1.finalize_fixed().as_slice(), b"FpLiADEaVoALPkdb8tJEJyRTXoe_");
Etag V2 计算输入流示例
use qiniu_etag::async_etag_of;
use futures::io::Cursor;
assert_eq!(
async_etag_of(
&mut Cursor::new(data_of_size(9 << 20)),
&[1 << 22, 1 << 22, 1 << 20]
).await?,
"ljgVjMtyMsOgIySv79U8Qz4TrUO4",
);
最低支持的 Rust 版本(MSRV)
1.70.0
联系我们
- 如需帮助,请提交工单(在 portal 右侧点击咨询和建议提交工单,或直接向 [email protected] 发送邮件)
- 如有问题,可至问答社区提问,问答社区
- 更详细的文档,见官方文档站
- 如发现 bug,欢迎提交 Issue
- 如有功能需求,欢迎提交 Issue
- 如要提交代码,欢迎提交 Pull Request
- 欢迎关注我们的微信 微博,及时获取动态信息。
代码许可
本项目采用 MIT 许可证。
依赖
~0.8–1.2MB
~25K SLoC