This repository was archived by the owner on Jun 3, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -249,6 +249,32 @@ pub trait DeserializeOwned: Sized + IntoStatic {
249
249
) -> impl Future < Output = Result < Self , MerdeError < ' s > > > ;
250
250
}
251
251
252
+ pub trait DynDeserialize {
253
+ fn dyn_deserialize < ' de > (
254
+ de : & ' de mut dyn DynDeserializer < ' de > ,
255
+ ) -> Result < Box < Self > , MerdeError < ' static > >
256
+ where
257
+ Self : Sized ;
258
+ }
259
+
260
+ impl dyn DynDeserialize {
261
+ fn _assert_dyn_safe ( _: Box < dyn DynDeserialize > ) { }
262
+ }
263
+
264
+ impl < T > DynDeserialize for T
265
+ where
266
+ T : DeserializeOwned ,
267
+ {
268
+ fn dyn_deserialize < ' de > (
269
+ de : & ' de mut dyn DynDeserializer < ' de > ,
270
+ ) -> Result < Box < Self > , MerdeError < ' static > > {
271
+ match T :: deserialize_owned ( de) . run_sync_with_metastack ( ) {
272
+ Ok ( value) => Ok ( Box :: new ( value) ) ,
273
+ Err ( e) => Err ( e. into_static ( ) ) ,
274
+ }
275
+ }
276
+ }
277
+
252
278
impl < T > DeserializeOwned for T
253
279
where
254
280
T : IntoStatic ,
Original file line number Diff line number Diff line change @@ -48,6 +48,7 @@ pub use deserialize::DeserOpinions;
48
48
pub use deserialize:: Deserialize ;
49
49
pub use deserialize:: DeserializeOwned ;
50
50
pub use deserialize:: Deserializer ;
51
+ pub use deserialize:: DynDeserialize ;
51
52
pub use deserialize:: DynDeserializer ;
52
53
pub use deserialize:: DynDeserializerExt ;
53
54
pub use deserialize:: FieldSlot ;
You can’t perform that action at this time.
0 commit comments