#deserialize #serialization #serde #purp #purp-value

无std purp-value-derive

泛型序列化/反序列化/类型框架

1 个不稳定版本

0.1.0 2023年4月19日

#536#deserialize

MIT/Apache

13KB
227

✨ Purp Value :sparkles

Purp Value 为你在 Rust 项目中操作不同类型的数据提供了一种灵活且强大的方式。无论你需要处理数字、字符串、数组、对象还是日期时间值,Purp Value 都能满足你的需求。

功能

  • 用于操作值的简单易用的 API
  • 不同类型数据的一致 API
  • 提供经典的方法进行数字和字符串操作
  • 支持转换为和来自各种数据格式(例如,JSON、YAML 和 XML)
  • 与 Serde 集成以实现轻松的序列化和反序列化
  • 使用 Pest 进行数据验证的本地解析和转换

示例

以下是使用 Purp Value 的示例

use value::{Array, DateTime, Number, Object, StringB, Value};

let string_value = Value::String(StringB::new("hello".to_string()));
let number_value = Value::Number(Number::from(42));
let boolean_value = Value::Boolean(true);
let null_value = Value::Null;
let undefined_value = Value::Undefined;
let mut datetime_value = Value::DateTime(DateTime::from("2023-04-05T00:00:00Z"));

string_value.to_string();
number_value.get_i32();
assert_eq!(boolean_value, true);
assert_eq!(null_value, Value::Null);
assert_eq!(undefined_value, Value::Undefined);
datetime_value.add_days(1);

转换为 Value

你也可以通过实现 to_value 方法将你的自定义数据类型转换为 Value 枚举。例如

use value::{Array, DateTime, Number, Object, StringB, Value};

let array = Array::from(vec![Value::Number(Number::from(1)), Value::Number(Number::from(2))]).to_value();
let object = Object::from(vec![("key".to_string(), Value::String(StringB::new("value".to_string())))]).to_value();
let string = StringB::new("hello".to_string()).to_value();
let number = Number::from(42).to_value();
let boolean = true.to_value();
let datetime = DateTime::from("2023-04-05T00:00:00Z").to_value();

入门指南

要在你的 Rust 项目中使用 Purp Value,只需在 Cargo.toml 文件中添加以下行

[dependencies]
value = "0.1"

然后,你可以在代码中导入该库,如下所示

use value::Value;

贡献

如果你发现了一个错误或对新的功能有建议,请在该 GitHub 仓库 上打开一个问题。

如果你想为该项目做出贡献,请随时提交拉取请求。在提交拉取请求之前,请确保你的代码遵循项目的设计规范并且通过了所有测试。

许可证

该项目采用 MIT 许可证。有关更多信息,请参阅 LICENSE-APACHELICENSE-MIT 文件。

依赖项

~305–760KB
~18K SLoC