3 个版本 (破坏性更新)
0.3.0 | 2024 年 7 月 15 日 |
---|---|
0.2.0 | 2024 年 5 月 15 日 |
0.1.0 | 2024 年 2 月 16 日 |
在 #foundation 中排名 36
每月下载量 882
155KB
3.5K SLoC
ur
是一个用于与 "Uniform Resources (UR)" 二进制数据编码交互的 crate。
编码方案优化了在 URI 和 QR 码中的传输。
编码器 允许字节有效载荷分多阶段传输,同时遵守最大大小要求。底层使用 fountain
编码器创建一个无界的 URI 流,接收端可以将其中的一部分重新组合成有效载荷。
例如
const MAX_FRAGMENT_LENGTH: usize = 5;
let data = "Ten chars!".repeat(10);
encoder.start("bytes", data.as_bytes(), MAX_FRAGMENT_LENGTH);
assert_eq!(
encoder.next_part().to_string(),
"ur:bytes/1-20/lpadbbcsiecyvdidatkpfeghihjtcxiabdfevlms"
);
while !decoder.is_complete() {
let sequence = encoder.current_sequence();
let part = encoder.next_part();
// Simulate some communication loss
if sequence & 1 > 0 {
decoder.receive(part).unwrap();
}
}
assert_eq!(decoder.message().unwrap().as_deref(), Some(data.as_bytes()));
以下有用的构建块也是公共 API 的一部分
依赖项
~3MB
~58K SLoC