Rust codegen Phantom handling bug
还没有人认领这个 Issue。
评估
调研方向
从 lambda-buffers-codegen/src/LambdaBuffers/Codegen/Rust/Print/TyDef.hs 的第 177 行附近开始,检查所示的 LambdaBuffers 定义如何转换为 Rust 结构体。比较生成的 CreateScriptsRequest 和 ScriptDatum 输出,同时检查不必要的 phantom_A 字段以及 phantom 值的可见性。当生成的 Rust 表示与源类型定义匹配,并且能够正确处理真正的 phantom 类型时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
Phantom handling in Rust codegen is not correct I believe https://github.com/mlabs-haskell/lambda-buffers/blob/401f8a920a557c71440795174da199a1e128c4f9/lambda-buffers-codegen/src/LambdaBuffers/Codegen/Rust/Print/TyDef.hs#L177
record CreateScriptsRequest a = {
scripts : Map ScriptHash (ScriptDatum a)
}
derive Eq (CreateScriptsRequest a)
derive Json (CreateScriptsRequest a)
record ScriptDatum a = {
scriptType : a,
-- ^ Protocol specific script type stored in this UTxO
redeemer : AssetClass
-- ^ Wallet containing `$redeemer` must sign the 'delete-script' transaction as an authorization method
}
derive Eq (ScriptDatum a)
derive PlutusData (ScriptDatum a)
derive Json (ScriptDatum a)
creates a
#[derive(std::fmt::Debug, std::clone::Clone)]
pub struct CreateScriptsRequest<A>{pub scripts: lbf_prelude::prelude::Map<lbf_plutus::plutus::v1::ScriptHash
,crate::cardano::extra::scriptstorage::validation::ScriptDatum<A>>,
phantom_A: std::marker::PhantomData<A>}
#[derive(std::fmt::Debug, std::clone::Clone)]
pub struct ScriptDatum<A>{pub script_type: A,
pub redeemer: lbf_plutus::plutus::v1::AssetClass}
There's 2 problems here.
- There's no actual phantom types in the original LB type def
- Even if there was, we have a problem when phantom values are not made pub in Rust
- 主要语言
- Haskell
- 星标
- 32
- 派生
- 1
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
mlabs-haskell/lambda-buffers 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 25/100
mlabs-haskell/lambda-buffers#296 ·
-
难度 5/5 一周以上 新手友好度 20/100
mlabs-haskell/lambda-buffers#295 ·
-
难度 4/5 3-5 天 新手友好度 20/100
mlabs-haskell/lambda-buffers#294 ·
-
Dykstra HF未关闭
难度 4/5 3-5 天 新手友好度 35/100
mlabs-haskell/lambda-buffers#293 ·
-
Nix-free path未关闭devops
难度 5/5 一周以上 新手友好度 25/100
mlabs-haskell/lambda-buffers#292 ·
查看 mlabs-haskell/lambda-buffers 的全部 Issue
相似的 Issue
-
bug
难度 1/5 1 小时以内 新手友好度 84/100
alunduil/network-arbitrary#180 ·
维护者通常 1 天内回复
-
infrastructure
难度 1/5 1-3 小时 新手友好度 65/100
alunduil/siren-json.hs#232 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 88/100
-
难度 2/5 1-3 小时 新手友好度 68/100
jgm/asciidoc-hs#14 ·
-
major-release strictness Tree
难度 2/5 1-3 小时 新手友好度 72/100
haskell/containers#1260 ·
维护者通常 1 天内回复