protocache-core 0.1.1

Core zero-copy runtime and encoding primitives for ProtoCache
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use protocache_core::{Buffer, MessageView, serialize_message, serialize_scalar, serialize_str};

fn main() {
    let mut buffer = Buffer::new();
    let name = serialize_str("Ada", &mut buffer).expect("name is encodable");
    let mut fields = [serialize_scalar(42_i32), name];
    serialize_message(&mut fields, &mut buffer).expect("message is encodable");

    let view = MessageView::new(buffer.view()).expect("valid ProtoCache message");
    let id = view.scalar::<i32>(0).expect("id field");
    let name = view
        .string(1)
        .and_then(|value| value.as_str())
        .expect("UTF-8 name field");

    println!("id={id}, name={name}");
}