11次发布
新 0.3.1 | 2024年8月14日 |
---|---|
0.3.0 | 2024年8月14日 |
0.2.1 | 2024年8月9日 |
0.1.6 | 2024年7月21日 |
0.1.5 | 2024年5月17日 |
#102 in WebAssembly
每月400次下载
用于 open-vector-tile
46KB
1K SLoC
pbf-rs
pbf
Rust crate提供了读取和写入Protocol Buffers (protobuf)消息的功能。这是一个无依赖项的包,使用no_std
,旨在用于嵌入式系统和WASM应用程序。该crate设计得小巧高效,牺牲了一些功能和灵活性。用户需要创建必要的数据结构并实现ProtoRead
和ProtoWrite
特质,以有效地使用它。
用法
将以下内容添加到您的Cargo.toml
[dependencies]
pbf = "0.1"
示例
use pbf::{ProtoRead, ProtoWrite, Protobuf, Field, Type};
#[derive(Default)]
struct TestMessage {
a: i32,
b: String,
}
impl TestMessage {
fn new(a: i32, b: &str) -> Self {
TestMessage { a, b: b.to_owned() }
}
}
impl ProtoWrite for TestMessage {
fn write(&self, pb: &mut Protobuf) {
pb.write_varint_field::<u64>(1, self.a as u64);
pb.write_string_field(2, &self.b);
}
}
impl ProtoRead for TestMessage {
fn read(&mut self, tag: u64, pb: &mut Protobuf) {
println!("tag: {}", tag);
match tag {
1 => self.a = pb.read_varint::<i32>(),
2 => self.b = pb.read_string(),
_ => panic!("Invalid tag"),
}
}
}
let mut pb = Protobuf::new();
let msg = TestMessage::new(1, "hello");
pb.write_message(1, &msg);
let bytes = pb.take();
let mut pb = Protobuf::from_input(RefCell::new(bytes));
// first read in the field for the message
let field = pb.read_field();
assert_eq!(
field,
Field {
tag: 1,
r#type: Type::Bytes
}
);
let mut msg = TestMessage::default();
pb.read_message(&mut msg);
assert_eq!(msg.a, 1);
assert_eq!(msg.b, "hello");
开发
要求
您需要tarpaulin
工具来生成覆盖率报告。使用以下命令安装它
cargo install cargo-tarpaulin
bacon coverage
工具用于生成覆盖率报告。要使用pycobertura包生成更美观的覆盖率报告,使用以下命令安装它
pip install pycobertura
运行测试
要运行测试,请使用以下命令
cargo test
# bacon
bacon test
生成覆盖率报告
要生成覆盖率报告,请使用以下命令
cargo tarpaulin
# bacon
bacon coverage # or type `l` inside the tool