惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Martin Fowler
Martin Fowler
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
C
Check Point Blog
H
Help Net Security
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
P
Proofpoint News Feed
V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
S
SegmentFault 最新的问题
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
博客园_首页
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏

博客园 - _朝晖

Claude Code创始人谈AI时代角色融合:未来团队需要这五种人 docker proxy setting kali linux上安装docker 高频交易策略算法简单示例 hot topics skill Polymarket 套利圣经:真正的差距在数学基础设施 一文读懂大模型交互模式:CoT、ReAct、ReWOO与Reflexion技术解析 Polymarket十大交易策略(附实例) 拆解Polymarket五大套利流派:普通玩家如何抓住百万美金机会? HFT策略算法简单示例 多智能体并行协作开发模式 Claude Code Agent Teams 完整上手攻略 Claude Code 启用 LSP 完全指南:2 分钟让 AI 编程速度提升 900 倍 Claude Code 免费从入门到精通 Claude Sonnet 4.6空降!Office性能干翻旗舰模型,软件股哀嚎一片 Claude Code从小白到大神的10000字终极指南 如何使用claude的plan模式? 2025年网络安全十大发展趋势发布 HLOB:限价订单簿中的信息持久性和结构 端口扫描工具横向对比测评 Rust生命周期,看这一篇就够了~ Rust中的三种多态性——Enum和Trait(上) Rust OO:多态与继承 AFL漏洞挖掘技术漫谈(一):用AFL开始你的第一次Fuzzing
rust的枚举多态
_朝晖 · 2024-07-02 · via 博客园 - _朝晖

父类的定义

pub enum  XMSSAddress{
    HashTreeAddress(HashTreeAddress),
    LTreeAddress(LTreeAddress),
    OTSHashAddress(OTSHashAddress),
}

用匹配表达式判断父类对象是那个子类:

let resultAddress=match address {
            XMSSAddress::LTreeAddress(tempAddress)=>{
                address=XMSSAddress::LTreeAddress(crate::XMSS::LTreeAddress::LTreeBuilder::new1().withLayerAddress(tempAddress.getLayerAddress())
                    .withTreeAddress(tempAddress.getTreeAddress()).withLTreeAddress(tempAddress.getLTreeAddress())
                    .withTreeHeight(tempAddress.getTreeHeight()).withTreeIndex(tempAddress.getTreeIndex())
                    .withKeyAndMask(0).build());
                address
            },
            XMSSAddress::HashTreeAddress(tempAddress)=>{
                address = XMSSAddress::HashTreeAddress(crate::XMSS::HashTreeAddress::HashTreeBuilder::new1().withLayerAddress(tempAddress.getLayerAddress())
                    .withTreeAddress(tempAddress.getTreeAddress()).withTreeHeight(tempAddress.getTreeHeight())
                    .withTreeIndex(tempAddress.getTreeIndex()).withKeyAndMask(0).build());
                address
            }
        };

把子类对象转换成父类对象:

let tempAddress: XMSSAddress = XMSSAddress::HashTreeAddress(hashTreeAddress);