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

推荐订阅源

MyScale Blog
MyScale Blog
A
About on SuperTechFans
G
Google Developers Blog
B
Blog RSS Feed
F
Fortinet All Blogs
WordPress大学
WordPress大学
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
IT之家
IT之家
P
Proofpoint News Feed
美团技术团队
量子位
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
B
Blog
有赞技术团队
有赞技术团队
U
Unit 42

博客园 - _朝晖

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);