#version #checker #semver

serde-semver

Serde兼容版本检查器

3个不稳定版本

0.2.1 2021年12月8日
0.2.0 2021年12月8日
0.1.0 2021年6月14日

编码类别中排名第1779

每月下载量41
flour使用

MIT许可证

7KB

serde-semver: Serde兼容版本检查器

API文档

此crate提供了一个 derive 宏 SemverReq 来构建一个 版本化的 标记类型。例如,它将类型与版本 "3.1.4" 关联。

#[derive(SemverReq)]
#[version("3.1.4")]
struct MyVersion;

在反序列化过程中,标记类型充当版本检查器。在这个例子中,标记检查反序列化的JSON文本是否与版本 "3.1.4" 兼容。例如,"3.1.3" 和 "3.1.0" 是有效版本,但 "3.2.0" 和 "2.7.0" 不是。

use semver::Version;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use serde_semver::SemverReq;

#[derive(SemverReq)]
#[version("3.1.4")]
struct MyVersion;

// An example configuration with version tag
#[derive(Serialize, Deserialize)]
struct Config {
    pub version: MyVersion,
    pub input_file: PathBuf,
    pub output_file: PathBuf,
}

// The version is audited during deserialization.
let config: Config = serde_json::from_str(
    r#"{
  "version": "3.1.4",
  "input_file": "input.txt",
  "output_file": "output.txt"
}"#,
)
.unwrap();

// The version is recovered after serialization.
assert_eq!(
    serde_json::to_string_pretty(&config).unwrap(),
    r#"{
  "version": "3.1.4",
  "input_file": "input.txt",
  "output_file": "output.txt"
}"#,
);

许可证

MIT许可证。请参阅LICENSE.txt文件。

依赖项

~1.3–1.7MB
~41K SLoC