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

Commit d5deafd

Browse files
Use DynSerialize in merde_json
1 parent 253d0da commit d5deafd

File tree

3 files changed

+16
-19
lines changed

3 files changed

+16
-19
lines changed

merde_core/src/serialize.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,21 @@ where
3838
}
3939

4040
pub trait DynSerializerExt {
41-
fn serialize<'s, T: Serialize>(&'s mut self, t: &'s T) -> Result<(), MerdeError<'static>>;
41+
fn serialize<T: Serialize>(&mut self, t: &T) -> Result<(), MerdeError<'static>>;
42+
fn dyn_serialize(&mut self, t: &mut dyn DynSerialize) -> Result<(), MerdeError<'static>>;
4243
}
4344

4445
impl<S> DynSerializerExt for S
4546
where
4647
S: DynSerializer,
4748
{
48-
fn serialize<'fut, T: Serialize>(
49-
&'fut mut self,
50-
t: &'fut T,
51-
) -> Result<(), MerdeError<'static>> {
49+
fn serialize<T: Serialize>(&mut self, t: &T) -> Result<(), MerdeError<'static>> {
5250
T::serialize(t, self).run_sync_with_metastack()
5351
}
52+
53+
fn dyn_serialize(&mut self, t: &mut dyn DynSerialize) -> Result<(), MerdeError<'static>> {
54+
DynSerialize::dyn_serialize(t, self).run_sync_with_metastack()
55+
}
5456
}
5557

5658
pub trait Serialize {

merde_json/src/lib.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ pub use serialize::{JsonSerializer, JsonSerializerWriter};
1010
mod jiter_lite;
1111

1212
use merde_core::{
13-
Deserialize, DeserializeOwned, DynDeserializerExt, DynSerializerExt, MerdeError, MetastackExt,
14-
Serialize,
13+
Deserialize, DeserializeOwned, DynDeserializerExt, DynSerialize, DynSerializerExt, MerdeError,
14+
MetastackExt, Serialize,
1515
};
1616

1717
/// Deserialize an instance of type `T` from a string of JSON text.
@@ -71,14 +71,11 @@ pub fn to_vec<T: Serialize>(value: &T) -> Result<Vec<u8>, MerdeError<'static>> {
7171
}
7272

7373
/// Serialize the given data structure as JSON into the I/O stream.
74-
pub fn to_writer<W, T>(
75-
mut writer: impl std::io::Write,
76-
value: &T,
77-
) -> Result<(), MerdeError<'static>>
78-
where
79-
T: Serialize,
80-
{
81-
let mut s = JsonSerializer::from_writer(&mut writer);
82-
s.serialize(value)?;
74+
pub fn to_writer(
75+
writer: &mut dyn std::io::Write,
76+
value: &mut dyn DynSerialize,
77+
) -> Result<(), MerdeError<'static>> {
78+
let mut s = JsonSerializer::from_writer(writer);
79+
s.dyn_serialize(value)?;
8380
Ok(())
8481
}

merde_json/src/serialize.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,7 @@ where
193193

194194
impl<'w> JsonSerializer<SyncWriteWrapper<'w>> {
195195
/// Makes a json serializer that writes to a std::io::Write
196-
pub fn from_writer<SW: std::io::Write + 'w>(
197-
w: &'w mut SW,
198-
) -> JsonSerializer<SyncWriteWrapper<'w>> {
196+
pub fn from_writer(w: &'w mut dyn std::io::Write) -> JsonSerializer<SyncWriteWrapper<'w>> {
199197
JsonSerializer::new(SyncWriteWrapper(w))
200198
}
201199
}

0 commit comments

Comments
 (0)