Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.

Commit c9e0ef9

Browse files
Make merde_time flags make sense
1 parent 2480dff commit c9e0ef9

File tree

3 files changed

+26
-24
lines changed

3 files changed

+26
-24
lines changed

merde/Cargo.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@ required-features = ["json"]
2828
[dependencies]
2929
merde_core = { version = "4.0.2", path = "../merde_core", optional = true }
3030
merde_json = { version = "4.0.2", path = "../merde_json", optional = true }
31-
merde_time = { version = "4.0.2", path = "../merde_time", optional = true }
31+
merde_time = { version = "4.0.2", path = "../merde_time", optional = true, features = [
32+
"merde",
33+
] }
3234

3335
[features]
3436
default = ["core", "deserialize"]
3537
full = ["core", "deserialize", "json", "time"]
36-
deserialize = ["core"]
38+
deserialize = ["core", "merde_time/deserialize"]
3739
core = ["dep:merde_core"]
3840
compact_str = ["merde_core/compact_str"]
3941
serde = ["merde_core/serde"]
4042

41-
json = ["dep:merde_json"]
43+
json = ["dep:merde_json", "merde_time/json"]
4244
time = ["dep:merde_time"]

merde_time/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ time = { version = "0.3.36", features = ["macros"] }
2222
default = []
2323
full = ["merde", "json", "serialize", "deserialize"]
2424
merde = ["dep:merde_core"]
25-
json = ["merde", "dep:merde_json"]
25+
json = ["merde", "dep:merde_json", "serialize"]
2626
serialize = ["time/formatting"]
27-
deserialize = ["time/parsing"]
27+
deserialize = ["merde", "time/parsing"]

merde_time/src/lib.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,9 @@ where
5454
}
5555

5656
#[cfg(feature = "merde")]
57-
mod merde_impls {}
58-
59-
#[cfg(feature = "json")]
60-
mod merde_json_impls {
57+
mod merde_impls {
6158
use super::*;
6259

63-
use time::OffsetDateTime;
64-
6560
impl merde_core::IntoStatic for Rfc3339<OffsetDateTime> {
6661
type Output = Rfc3339<OffsetDateTime>;
6762

@@ -70,19 +65,6 @@ mod merde_json_impls {
7065
}
7166
}
7267

73-
#[cfg(feature = "serialize")]
74-
impl merde_json::JsonSerialize for Rfc3339<time::OffsetDateTime> {
75-
fn json_serialize(&self, s: &mut merde_json::JsonSerializer) {
76-
// Note: we assume there's no need to escape the string
77-
let buf = s.as_mut_vec();
78-
buf.push(b'"');
79-
self.0
80-
.format_into(buf, &time::format_description::well_known::Rfc3339)
81-
.unwrap();
82-
buf.push(b'"');
83-
}
84-
}
85-
8668
#[cfg(feature = "deserialize")]
8769
impl<'s> merde_core::ValueDeserialize<'s> for Rfc3339<time::OffsetDateTime> {
8870
fn from_value_ref<'val>(
@@ -108,6 +90,24 @@ mod merde_json_impls {
10890
}
10991
}
11092

93+
#[cfg(feature = "json")]
94+
mod merde_json_impls {
95+
use super::*;
96+
97+
#[cfg(feature = "serialize")]
98+
impl merde_json::JsonSerialize for Rfc3339<time::OffsetDateTime> {
99+
fn json_serialize(&self, s: &mut merde_json::JsonSerializer) {
100+
// Note: we assume there's no need to escape the string
101+
let buf = s.as_mut_vec();
102+
buf.push(b'"');
103+
self.0
104+
.format_into(buf, &time::format_description::well_known::Rfc3339)
105+
.unwrap();
106+
buf.push(b'"');
107+
}
108+
}
109+
}
110+
111111
#[cfg(all(test, feature = "full",))]
112112
mod tests {
113113
use super::*;

0 commit comments

Comments
 (0)