@@ -80,7 +80,6 @@ impl<'gc, T: Serialize, Id: CollectorId> Serialize for Gc<'gc, T, Id> {
80
80
}
81
81
}
82
82
83
-
84
83
impl < ' gc , T : Serialize , Id : CollectorId > Serialize for GcArray < ' gc , T , Id > {
85
84
fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > where
86
85
S : serde:: Serializer {
@@ -106,6 +105,22 @@ impl<'gc, 'de, T, Id: CollectorId> GcDeserialize<'gc, 'de, Id> for PhantomData<T
106
105
}
107
106
}
108
107
108
+ impl < T : Serialize + Trace + Copy > Serialize for GcCell < T > {
109
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > where
110
+ S : serde:: Serializer {
111
+ self . get ( ) . serialize ( serializer)
112
+ }
113
+ }
114
+
115
+ impl < ' gc , ' de , T , Id > GcDeserialize < ' gc , ' de , Id > for GcCell < T >
116
+ where T : Copy + GcDeserialize < ' gc , ' de , Id > , Id : CollectorId {
117
+ fn deserialize_gc < D : Deserializer < ' de > > ( ctx : & ' gc Id :: Context , deser : D ) -> Result < Self , D :: Error > {
118
+ Ok ( GcCell :: new ( T :: deserialize_gc ( ctx, deser) ?) )
119
+ }
120
+ }
121
+
122
+
123
+
109
124
impl < ' gc , ' de , Id : CollectorId > GcDeserialize < ' gc , ' de , Id > for ( ) {
110
125
fn deserialize_gc < D : Deserializer < ' de > > ( _ctx : & ' gc Id :: Context , deserializer : D ) -> Result < Self , D :: Error > {
111
126
0 commit comments