1use differs::{Fields, HasFields as _};
3use serde::{Deserialize, Serialize};
4
5#[derive(Fields, Serialize, Deserialize, Debug, Clone)]
6struct Foo {
7 a: i64,
8 bar: Bar,
9}
10
11#[derive(Fields, Serialize, Deserialize, Debug, Clone)]
12struct Bar {
13 c: String,
14 b: Baz,
15 z: Baz,
16}
17#[derive(Fields, Serialize, Deserialize, Debug, Clone)]
18struct Baz {
19 d: String,
20}
21#[derive(Fields)]
22pub struct Vec2(pub f32, pub f32);
23
24#[derive(Fields)]
25pub enum Message {
26 Quit, Move(i32, i32), Write { text: String }, }
30
31fn main() {
32 println!("a = {:?}", Foo::fields().a());
33 println!("bar.c = {:?}", Foo::fields().bar().c());
34 println!("bar.b.d = {:?}", Foo::fields().bar().b().d());
35 println!("bar.z.d = {:?}", Foo::fields().bar().z().d());
36 println!("{:?}", Vec2::fields().item0()); println!("{:?}", Message::fields().Quit()); println!("{:?}", Message::fields().Move().item1()); println!("{:?}", Message::fields().Write().text()); }