From 2acdd45eb37f679e1201f2dc3895ef27ae898ba0 Mon Sep 17 00:00:00 2001 From: ivanlele Date: Thu, 9 Apr 2026 12:43:36 +0300 Subject: [PATCH] Detach codec --- Haskell-Generate/GenRustJets.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Haskell-Generate/GenRustJets.hs b/Haskell-Generate/GenRustJets.hs index e0b54205..fd891ada 100644 --- a/Haskell-Generate/GenRustJets.hs +++ b/Haskell-Generate/GenRustJets.hs @@ -212,7 +212,7 @@ rustJetCJetPtr mod = vsep $ rustJetEncode :: Module -> Doc a rustJetEncode mod = - "fn encode(&self, w: &mut BitWriter) -> std::io::Result" <+> + "fn encode(&self, w: &mut BitWriter<&mut dyn Write>) -> std::io::Result" <+> nestBraces ("let (n, len) = match self" <+> nestBraces (vsep (foldMapWithPath item (moduleCodes mod))) <> semi <-> line <> "w.write_bits_be(n, len)") where @@ -223,9 +223,10 @@ rustJetEncode mod = rustJetDecode :: Module -> Doc a rustJetDecode mod = - "fn decode>(bits: &mut BitIter) -> Result" <+> + pretty ("pub(crate) fn decode>(bits: &mut BitIter) -> Result<" ++ modname ++ ", decode::Error>") <+> nestBraces ("decode_bits!(bits," <+> braces (docTree (moduleCodes mod)) <> ")") where + modname = rustModuleName mod docTree Dead = mempty docTree (Leaf (SomeArrow jet)) = pretty (rustModuleName mod ++ "::" ++ jetName jet) docTree (Branch l r) = nest 4 @@ -259,7 +260,6 @@ rustJetImpl mod = vsep $ , rustJetSourceTy mod , rustJetTargetTy mod , rustJetEncode mod - , rustJetDecode mod , rustJetCost mod ]) , "}" @@ -350,6 +350,7 @@ rustJetDoc mod = layoutPretty layoutOptions $ vsep (map (<> line) , rustJetDisplay mod , rustJetFromStr mod , rustJetCJetPtr mod + , rustJetDecode mod ]) rustFFIImports :: Doc a