5个版本 (3个重大更新)
0.4.1 | 2024年4月4日 |
---|---|
0.4.0 | 2024年3月28日 |
0.3.0 | 2024年3月21日 |
0.2.0 | 2024年3月20日 |
0.1.0 | 2024年3月19日 |
#24 在 #u16
每月27次下载
在 2 个crate中使用 (通过 jget)
30KB
478 行
jget
Cargo.toml
[dependencies]
jget = { version = "0.4.1", features = ["derive"] }
或者
[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));
}
依赖
~195KB