@@ -212,7 +212,7 @@ rustJetCJetPtr mod = vsep $
212212
213213rustJetEncode :: Module -> Doc a
214214rustJetEncode mod =
215- " fn encode<W: Write> (&self, w: &mut BitWriter<W >) -> std::io::Result<usize>" <+>
215+ " fn encode(&self, w: &mut BitWriter<&mut dyn Write >) -> std::io::Result<usize>" <+>
216216 nestBraces (" let (n, len) = match self" <+>
217217 nestBraces (vsep (foldMapWithPath item (moduleCodes mod ))) <> semi <-> line <> " w.write_bits_be(n, len)" )
218218 where
@@ -223,7 +223,7 @@ rustJetEncode mod =
223223
224224rustJetDecode :: Module -> Doc a
225225rustJetDecode mod =
226- " fn decode<I: Iterator<Item = u8>>(bits: &mut BitIter<I>) -> Result<Self, decode::Error>" <+>
226+ " fn decode<I: Iterator<Item = u8>>(bits: &mut BitIter<I>) -> Result<Self, decode::Error> where Self: Sized " <+>
227227 nestBraces (" decode_bits!(bits," <+> braces (docTree (moduleCodes mod )) <> " )" )
228228 where
229229 docTree Dead = mempty
@@ -251,6 +251,11 @@ rustJetCost mod = vsep $
251251 where
252252 modname = rustModuleName mod
253253
254+ rustJetParse :: Doc a
255+ rustJetParse =
256+ " fn parse(s: &str) -> Result<Self, crate::Error> where Self: Sized" <+>
257+ nestBraces " str::FromStr::from_str(s)"
258+
254259rustJetImpl :: Module -> Doc a
255260rustJetImpl mod = vsep $
256261 [ nest 4 (vsep $ punctuate line
@@ -261,6 +266,7 @@ rustJetImpl mod = vsep $
261266 , rustJetEncode mod
262267 , rustJetDecode mod
263268 , rustJetCost mod
269+ , rustJetParse
264270 ])
265271 , " }"
266272 ]
0 commit comments