1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! # 序列化和反序列化 Duration 类型
//!
//! 此模块提供了对 Duration 类型的自定义序列化和反序列化实现。
//! 序列化时将 Duration 转换为字符串格式(如 "5s" 表示5秒),
//! 反序列化时将字符串解析为 Duration。
//!
//! ## 示例
//!
//! ```
//! use std::time::Duration;
//! use serde::{Deserialize, Serialize};
//!
//! #[derive(Serialize, Deserialize)]
//! struct Config {
//! #[serde(with = "wheel_rs::serde::duration_serde")]
//! timeout: Duration,
//! }
//! ```
use parse_duration;
use ;
use Duration;
/// # Duration序列化
///
/// 将 Duration 序列化为字符串格式。Duration 会被转换为以秒为单位的字符串,
/// 格式为数字后跟 's' 字符(例如 "5s" 表示5秒)。
///
/// ## 示例
///
/// ```
/// use wheel_rs::serde::duration_serde;
/// use serde_json;
/// use std::time::Duration;
///
/// let duration = Duration::from_secs(5);
/// let serialized = serde_json::to_string(&duration).unwrap();
/// assert_eq!(serialized, "\"5s\"");
/// ```
/// # Duration反序列化
///
/// 将字符串格式的时间间隔反序列化为 Duration 类型。
/// 支持的格式包括 "5s"(5秒)、"3m"(3分钟)、"6h"(6小时)等。
///
/// ## 示例
///
/// ```
/// use wheel_rs::serde::duration_serde;
/// use serde_json;
/// use std::time::Duration;
///
/// let json = "\"5s\"";
/// let deserialized: Duration = serde_json::from_str(json).unwrap();
/// assert_eq!(deserialized, Duration::from_secs(5));
/// ```