#protobuf #reflection #looking #prost #glass #enums #looking-glass

looking-glass-protobuf

looking-glass-protobuf is a Protobuf reflection library built on looking-glass and Prost

2 releases

0.1.1 Jan 7, 2022
0.1.0 Jan 7, 2022

#24 in #looking

36 downloads per month

MIT license

115KB
2.5K SLoC

Looking Glass

Looking Glass provides reflection for virtually any Rust type. It does this through a set of traits and type-erasing enums.

This project was recently open-sourced and will have better documentation written up later. For now, the best way to check out the project is to clone it and look at the Rust docs. While this project was only recently open-sourced, it has been iterated on to a point of relative stability. We can't promise that the API won't change, especially for a good reason. But it currently suits all of M10's needs, and so is unlikely to change drastically.

Example

use looking_glass::Typed;
use looking_glass_derive::Instance;

#[derive(Instance, Clone, PartialEq)]
struct Foo {
 text: String,
 int: i32,
}

let test = Foo { text: "Test".to_string(), int: -2 };
let val = test.as_value();
let inst = val.as_reflected_struct().unwrap();
let value  = inst.get_value("text").expect("field not found");
let text = value.as_ref().borrow::<&String>().expect("borrow failed");
assert_eq!(text, &test.text);

Dependencies

~2.5MB
~55K SLoC