1 个不稳定版本
0.1.0 | 2022年8月6日 |
---|
#698 在 压缩
24KB
573 代码行
Minnow
Minnow是一个库,用于使用算术编码将对象序列化为极其紧凑的二进制表示形式。
Minnow是一个推导宏和便捷层,基于算术编码库。
use minnow::Encodeable;
#[derive(Debug, Encodeable, PartialEq)]
pub struct NavigationReport {
#[encode(float(min = -10_000.0, max = 10_000.0, precision = 1))]
pub x: f64,
#[encode(float(min = -10_000.0, max = 10_000.0, precision = 1))]
pub y: f64,
#[encode(float(min = -5_000.0, max = 0.0, precision = 0))]
pub z: f64,
pub vehicle_class: Option<VehicleClass>,
pub battery_ok: Option<bool>,
}
#[derive(Debug, Encodeable, PartialEq)]
pub enum VehicleClass {
Auv,
Usv,
Ship,
}
let input = NavigationReport {
x: 450.0,
y: 550.0,
z: -100.0,
vehicle_class: Some(VehicleClass::Auv),
battery_ok: Some(true),
};
let compressed = input.encode_bytes().unwrap();
let output = NavigationReport::decode_bytes(&compressed).unwrap();
assert_eq!(input, output);
Minnow最初构思为一个用于创建水下声学通信紧凑消息的库。它受到了动态紧凑控制语言(DCCL)的极大启发。
许可
本项目在GNU通用公共许可证v3.0下公开发布。通过商业协议,本项目可选择性在MIT许可下分发。
依赖关系
~1.1–1.7MB
~30K SLoC