2个版本

0.1.1 2023年4月11日
0.1.0 2023年4月11日

#78#required

Download history 849/week @ 2024-04-03 757/week @ 2024-04-10 588/week @ 2024-04-17 455/week @ 2024-04-24 444/week @ 2024-05-01 498/week @ 2024-05-08 469/week @ 2024-05-15 538/week @ 2024-05-22 443/week @ 2024-05-29 483/week @ 2024-06-05 591/week @ 2024-06-12 470/week @ 2024-06-19 588/week @ 2024-06-26 526/week @ 2024-07-03 411/week @ 2024-07-10 704/week @ 2024-07-17

2,312 每月下载次数
3 个crate中使用 (通过 tokio-openai)

MIT 许可

11KB
185

derive-build

Crates.io

Rust中的意见派构建宏

#[derive(Default, Build, Eq, PartialEq, Debug)]
struct Request {
    #[required]
    url: String,

    path: Option<String>,

    messages: Vec<String>,
}

fn main() {
    let request = Request::new("example.com")
        .path("tester")
        .message("hello")
        .message("goodbye");

    let expected = Request {
        url: "example.com".to_string(),
        path: Some("tester".to_string()),
        messages: vec!["hello".to_string(), "goodbye".to_string()],
    };

    assert_eq!(request, expected);
}

功能

  • 必需字段
  • 可选字段
  • 可选字段的默认值
  • 必需字段的默认值(代替选项)
  • 支持 Option<T> 字段
  • 支持 Vec<T> 字段
  • 支持 Cow<'a, T> 字段
  • 支持引用字段 (&'a T)
  • 自动 Into<T> 转换
  • 自动字段名称单数化
  • 支持 HashMap<K, V> 字段
  • 支持 HashSet<T> 字段
  • 支持 BTreeMap<K, V> 字段
  • 支持 BTreeSet<T> 字段
  • 支持 Box<T> 字段
  • 支持 Rc<T> 字段
  • 支持 Arc<T> 字段
  • 支持整型

依赖

~0.4–0.9MB
~19K SLoC