Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
68
third-party/vendor/valuable/examples/hello_world.rs
vendored
Normal file
68
third-party/vendor/valuable/examples/hello_world.rs
vendored
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
use valuable::*;
|
||||
|
||||
struct HelloWorld {
|
||||
hello: &'static str,
|
||||
world: World,
|
||||
}
|
||||
|
||||
struct World {
|
||||
answer: usize,
|
||||
}
|
||||
|
||||
static HELLO_WORLD_FIELDS: &[NamedField<'static>] =
|
||||
&[NamedField::new("hello"), NamedField::new("world")];
|
||||
|
||||
impl Structable for HelloWorld {
|
||||
fn definition(&self) -> StructDef<'_> {
|
||||
StructDef::new_static("HelloWorld", Fields::Named(HELLO_WORLD_FIELDS))
|
||||
}
|
||||
}
|
||||
|
||||
impl Valuable for HelloWorld {
|
||||
fn as_value(&self) -> Value<'_> {
|
||||
Value::Structable(self)
|
||||
}
|
||||
|
||||
fn visit(&self, v: &mut dyn Visit) {
|
||||
v.visit_named_fields(&NamedValues::new(
|
||||
HELLO_WORLD_FIELDS,
|
||||
&[Value::String(self.hello), Value::Structable(&self.world)],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
static WORLD_FIELDS: &[NamedField<'static>] = &[NamedField::new("answer")];
|
||||
|
||||
impl Valuable for World {
|
||||
fn as_value(&self) -> Value<'_> {
|
||||
Value::Structable(self)
|
||||
}
|
||||
|
||||
fn visit(&self, v: &mut dyn Visit) {
|
||||
v.visit_named_fields(&NamedValues::new(
|
||||
WORLD_FIELDS,
|
||||
&[Value::Usize(self.answer)],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
impl Structable for World {
|
||||
fn definition(&self) -> StructDef<'_> {
|
||||
StructDef::new_static("World", Fields::Named(WORLD_FIELDS))
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let hello_world = HelloWorld {
|
||||
hello: "wut",
|
||||
world: World { answer: 42 },
|
||||
};
|
||||
|
||||
let value = Value::Structable(&hello_world);
|
||||
println!("{:#?}", value);
|
||||
|
||||
let slice = &[1, 2, 3][..];
|
||||
|
||||
let value = &slice as &dyn Valuable;
|
||||
println!("{:?}", value);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue