7个版本
0.2.3 | 2023年7月17日 |
---|---|
0.2.2 | 2022年10月23日 |
0.1.4 | 2022年10月22日 |
#2998 in Rust模式
5,761 每月下载量
在 2 个crates中使用(通过 firestore)
23KB
406 行
struct-path for Rust
库提供了一个小巧的宏实现,用于在编译时引用Rust结构体字段,以表示其字符串格式。这在处理JSON路径和其他一些协议时很有用,因为我们仍然想依赖编译器来避免不一致的更改。
功能
- 快速解析,无大量依赖;
- 宏产生代码以验证指定的路径是否确实存在;
- 支持多个字段/数组;
- 可选的camelCase和PascalCase转换支持;
- 可选的定界符参数;
- 支持使用基于
Iter
(Option、Vec等)的路径,使用~
定界符;
快速入门
Cargo.toml
[dependencies]
struct-path = "0.2"
示例代码
use struct_path::*;
pub struct TestStructParent {
pub value_str: String,
pub value_num: u64,
pub value_child: TestStructChild,
pub opt_value_str: Option<TestStructChild>,
}
pub struct TestStructChild {
pub child_value_str: String,
pub child_value_num: u64,
}
// returns "value_str"
let s1: &str = path!(TestStructParent::value_str);
// returns "value_child.child_value_str"
let s2: &str = path!(TestStructParent::value_child.child_value_str) ;
// returns also "value_child.child_value_str"
let s3: &str = path!(TestStructParent::value_child,TestStructChild::child_value_str);
// returns also "value_child.child_value_str" using trait `Iter`
let s3: &str = path!(TestStructParent::opt_value_child~child_value_str);
// options, returns "valueChild/childValueStr"
let s4: &str = path!(TestStructParent::value_child.child_value_str; delim="/", case="camel") ;
// returns ["value_str", "value_num"]
let arr: [&str; 2] = paths!(TestStructParent::{ value_str, value_num });
许可
Apache软件许可证(ASL)
作者
Abdulla Abdurakhmanov
依赖项
~630KB