1个稳定版本
1.0.0 | 2022年10月8日 |
---|
#1291 in 编码
9KB
104 行
deserialize-file-size
一个用于灵活且健壮地反序列化文件大小输入的serde辅助函数。
接受以下任一种格式
- 一个“人类可读”的大小字符串,例如“1k”、“5mb”、“12GiB”等。
- 以字节为单位的整数
示例
use serde::Deserialize;
use deserialize_file_size::deserialize_file_size;
#[derive(Deserialize, Debug, PartialEq)]
struct FileSize {
#[serde(deserialize_with = "deserialize_file_size")]
sz: usize,
}
let size_str = r#"{"sz": "42mb"}"#;
assert_eq!(
serde_json::from_str::<FileSize>(size_str).unwrap(),
FileSize { sz: 1024 * 1024 * 42 },
);
let int_bytes = r#"{"sz": 4096}"#;
assert_eq!(
serde_json::from_str::<FileSize>(int_bytes).unwrap(),
FileSize { sz: 4096 },
);
lib.rs
:
一个用于灵活且健壮地反序列化文件大小输入的serde辅助函数。
接受以下任一种格式
- 一个“人类可读”的大小字符串,例如“1k”、“5mb”、“12GiB”等。
- 以字节为单位的整数
示例
use serde::Deserialize;
use deserialize_file_size::deserialize_file_size;
#[derive(Deserialize, Debug, PartialEq)]
struct FileSize {
#[serde(deserialize_with = "deserialize_file_size")]
sz: usize,
}
let size_str = r#"{"sz": "42mb"}"#;
assert_eq!(
serde_json::from_str::<FileSize>(size_str).unwrap(),
FileSize { sz: 1024 * 1024 * 42 },
);
let int_bytes = r#"{"sz": 4096}"#;
assert_eq!(
serde_json::from_str::<FileSize>(int_bytes).unwrap(),
FileSize { sz: 4096 },
);
依赖项
~0.5–1.1MB
~25K SLoC