Skip to content

Commit 00a62c3

Browse files
committed
make decode/parse methods sized
1 parent 2ee52e3 commit 00a62c3

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Haskell-Generate/GenRustJets.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ rustJetCJetPtr mod = vsep $
212212

213213
rustJetEncode :: Module -> Doc a
214214
rustJetEncode 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

224224
rustJetDecode :: Module -> Doc a
225225
rustJetDecode 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+
254259
rustJetImpl :: Module -> Doc a
255260
rustJetImpl 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

Comments
 (0)