Crates.io | jget_derive |
lib.rs | jget_derive |
version | 0.4.1 |
source | src |
created_at | 2024-03-19 11:45:04.152579 |
updated_at | 2024-04-04 04:21:58.092868 |
description | Rust tools. |
homepage | https://github.com/caizhengxin/jppe-rs |
repository | https://github.com/caizhengxin/jppe-rs |
max_upload_size | |
id | 1179171 |
size | 29,185 |
[dependencies]
jget = { version = "0.4.1", features = ["derive"] }
Or
[dependencies]
jppe = { version = "0", features = ["derive", "jget"] }
use jget::Jget;
#[derive(Debug, Jget)]
pub enum SimpleEnumExample {
Read {
#[jget(get_option)]
value: u8,
},
Write {
#[jget(get_option)]
value: u8,
#[jget(get_option)]
data: u16,
}
}
fn main() {
let value = SimpleEnumExample::Read { value: 1 };
assert_eq!(value.get_value(), Some(1));
assert_eq!(value.get_data(), None);
let value = SimpleEnumExample::Write { value: 1, data: 2 };
assert_eq!(value.get_value(), Some(1));
assert_eq!(value.get_data(), Some(2));
}
use jget::Jget;
#[derive(Debug, Jget)]
pub struct SimpleStructExample {
#[jget(get="body.get_value():Option<u8>, body.get_data():Option<u16>")]
pub body: SimpleEnumExample,
}
#[derive(Debug, Jget)]
pub enum SimpleEnumExample {
Read {
#[jget(get_option)]
value: u8,
},
Write {
#[jget(get_option)]
value: u8,
#[jget(get_option)]
data: u16,
}
}
fn main() {
let value = SimpleStructExample{ body: SimpleEnumExample::Read { value: 1 } };
assert_eq!(value.get_value(), Some(1));
assert_eq!(value.get_data(), None);
let value = SimpleStructExample { body: SimpleEnumExample::Write { value: 1, data: 2 }};
assert_eq!(value.get_value(), Some(1));
assert_eq!(value.get_data(), Some(2));
}
use jget_derive::Jget;
#[derive(Debug, PartialEq, Eq, Jget)]
pub struct SimpleStructExample {
pub value: u16,
}
#[derive(Debug, PartialEq, Eq, Jget)]
pub struct SimpleStructExample2 {
pub value: u16,
pub data: u16,
}
#[derive(Debug, PartialEq, Eq, Jget)]
pub enum SimpleEnumExample {
#[jget(get="value:u16")]
V1(SimpleStructExample),
#[jget(get="value:u16", get_option="data:Option<u16>")]
V2(SimpleStructExample2),
}
#[test]
fn test_enum_struct() {
let value = SimpleEnumExample::V2(SimpleStructExample2 { value: 1, data: 2 });
assert_eq!(value.get_value(), 1);
assert_eq!(value.get_data(), Some(2));
}