5 个不稳定版本

0.3.1 2024 年 6 月 10 日
0.3.0 2024 年 6 月 7 日
0.2.1 2022 年 8 月 2 日
0.2.0 2022 年 6 月 28 日
0.1.0 2022 年 6 月 21 日

#238编码

Download history 3521/week @ 2024-04-27 4053/week @ 2024-05-04 3761/week @ 2024-05-11 3281/week @ 2024-05-18 2987/week @ 2024-05-25 2969/week @ 2024-06-01 3060/week @ 2024-06-08 3353/week @ 2024-06-15 3657/week @ 2024-06-22 3224/week @ 2024-06-29 2097/week @ 2024-07-06 2221/week @ 2024-07-13 2458/week @ 2024-07-20 2457/week @ 2024-07-27 2339/week @ 2024-08-03 2059/week @ 2024-08-10

9,627 每月下载量
用于 6 个 crate(直接使用 2 个)

MIT/Apache

34KB
912

Yaup - 另一个 URL 参数 crate

将您的结构体序列化为查询参数。我创建这个 crate 是因为我没有找到任何与 Meilisearch 中使用的查询参数结构相匹配的东西。

此查询参数格式的特性

  • 如果需要发送参数,则该 crate 会写入初始的 ?
  • 您只能序列化遵循 "键值" 形状的结构体,如结构体、HashMapBTreeMap 等。
  • 序列(数组、向量、元组等)用逗号分隔。 { doggo: vec!["kefir", "echo", "echo"] } 序列化为 ?doggo=kefir,echo
  • 空和 null 值不会被忽略。 { doggo: Vec::new(), catto: None } 序列化为 ?doggo=&catto=null
  • 如果您尝试序列化具有多级键值结构的结构体(例如,包含 HashMap 的对象),则会返回错误。

示例

#[derive(Debug, serde::Serialize)]
enum Filter { New, Registered, Blocked }

#[derive(Debug, serde::Serialize)]
struct Params {
    cursor: Option<usize>,
    per_page: Option<usize>,
    username: String,
    filter: Vec<Filter>,
}

let params = Params {
    cursor: Some(42),
    per_page: None,
    username: String::from("tamo"),
    filter: vec![Filter::New, Filter::Blocked],
};
assert_eq!(
    yaup::to_string(&params).unwrap(),
    "?cursor=42&per_page=null&username=tamo&filter=New,Blocked"
);

谢谢

这最初是 serde_url_params 的一个分支,该分支仍然在维护。感谢 boxdot 提供的初始代码。

从零开始重写了 v0.3.0 的所有内容。

许可

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在此文档中的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。

依赖

~0.4–1MB
~22K SLoC