#value #serde #utilities #debugging

serde-value-utils

serde_value 的实用工具集合

1 个不稳定版本

0.1.0 2019年7月3日

#62#utils

Download history 116/week @ 2024-03-27 157/week @ 2024-04-03 155/week @ 2024-04-10 164/week @ 2024-04-17 180/week @ 2024-04-24 100/week @ 2024-05-01 213/week @ 2024-05-08 202/week @ 2024-05-15 232/week @ 2024-05-22 157/week @ 2024-05-29 242/week @ 2024-06-05 106/week @ 2024-06-12 121/week @ 2024-06-19 128/week @ 2024-06-26 114/week @ 2024-07-03 107/week @ 2024-07-10

504 每月下载次数
2 个 crate 中使用 (通过 serde_gelf)

BSD-3-Clause

14KB
93 代码行

serde-value-utils

Build Status Latest version Documentation License

用于与 serde_value 一起使用的工具集合。

快速入门

您可以通过将其添加到您的 Cargo.toml 来开始使用它

[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde_value_utils = "0.1"

然后,创建一个实现了 serde::Serialize 特性的结构体,并使用任何 serde 库。

示例:to_flatten_maptree

#[macro_use]
extern crate serde_derive;
extern crate serde_json;
extern crate serde_value_utils;

#[derive(Serialize, Clone, Debug)]
struct SubFoo {
    a: String,
    b: u64,
}

#[derive(Serialize, Clone, Debug)]
struct Foo {
    a: String,
    b: f64,
    c: Vec<i8>,
    d: SubFoo,
}

fn main() {
    let foo = Foo { a: "test".into(), b: 0.5, c: vec![5, 9], d: SubFoo { a: "subtest".into(), b: 695217 } };
    let ser = serde_value_utils::to_flatten_maptree("_", Some("_"), &foo).unwrap();
    println!("{}", serde_json::to_string_pretty(&ser).unwrap());
}

输出:

 {
  "_a": "test",
  "_b": 0.5,
  "_c_0": 5,
  "_c_1": 9,
  "_d_a": "subtest",
  "_d_b": 695217
}

具有模式的功能

功能 with-schema 允许在字段名称后添加后缀,以便符合 LDP 命名约定

在您的 Cargo.toml 中设置

[dependencies]
serde_value_utils = { version = "0.1", features = ["with-schema"] }

重新运行前面的示例,现在输出将是

{
  "_a": "test",
  "_b_float": 0.5,
  "_c_0_long": 5,
  "_c_1_long": 9,
  "_d_a": "subtest",
  "_d_b_double": 695217
}

示例:try_detect_type

extern crate serde_value_utils;

use serde_value_utils::try_detect_type;

fn main() {
    println!("{:?}", try_detect_type("6.5"));
}

输出:

F64(6.5)

许可:BSD-3-Clause

依赖项

~335–640KB
~14K SLoC