#path #struct #json-path #json #struct-fields #compile-time

struct-path

一个辅助宏,用于在编译时构建表示结构体字段路径的字符串(例如 <field-name>.<field-name>)

7个版本

0.2.3 2023年7月17日
0.2.2 2022年10月23日
0.1.4 2022年10月22日

#2998 in Rust模式

Download history 1529/week @ 2024-03-16 1945/week @ 2024-03-23 1736/week @ 2024-03-30 1404/week @ 2024-04-06 1785/week @ 2024-04-13 2215/week @ 2024-04-20 1630/week @ 2024-04-27 1666/week @ 2024-05-04 1166/week @ 2024-05-11 1595/week @ 2024-05-18 1357/week @ 2024-05-25 1175/week @ 2024-06-01 1886/week @ 2024-06-08 1620/week @ 2024-06-15 1552/week @ 2024-06-22 477/week @ 2024-06-29

5,761 每月下载量
2 个crates中使用(通过 firestore

Apache-2.0

23KB
406

Cargo tests and formatting security audit

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