Types 是否可以匹配选项?

Types 是否可以匹配选项?,types,rust,match,Types,Rust,Match,我无法理解如何迭代一组选项,并且仅当元素类型满足某个条件时才采取行动 具体来说,我正在开发一个网络应用程序,其中我希望迭代网络接口IPv4或IPv6的所有可能IP地址,并且只对v4地址执行某些操作。在这种情况下,我想打印它们,所以我知道我必须实现显示 使用调试格式化程序打印我的值,我得到: Some([V6(fe80::6a5b:35ff:fec7:5eeb), V4(10.0.11.241)]) 这是一种选择。我想迭代向量并通过显示实现打印我遇到的每个V4地址 请注意,定义为 pub enu

我无法理解如何迭代一组选项,并且仅当元素类型满足某个条件时才采取行动


具体来说,我正在开发一个网络应用程序,其中我希望迭代网络接口IPv4或IPv6的所有可能IP地址,并且只对v4地址执行某些操作。在这种情况下,我想打印它们,所以我知道我必须实现显示

使用调试格式化程序打印我的值,我得到:

Some([V6(fe80::6a5b:35ff:fec7:5eeb), V4(10.0.11.241)])
这是一种选择。我想迭代向量并通过显示实现打印我遇到的每个V4地址

请注意,定义为

pub enum IpAddr {
    V4(Ipv4Addr),
    V6(Ipv6Addr),
}
如何仅在我的情况下匹配V4类型上的枚举

use std::net::IpAddr;

fn printer(addrs: Option<Vec<IpAddr>>) {
    if let Some(addrs) = addrs {
        for addr in addrs {
            if let IpAddr::V4(v4_addr) = addr {
                println!("{}", v4_addr)
            }
        }
    }
}
有关详细信息,请参见以下章节:


欢迎来到StackOverflow!在这里,我们希望首先在你的问题上投入一些精力,并描述你在你的问题中尝试了什么。为了避免否决票,您可以在问题中添加详细信息,就像我尝试过的那样,但没有效果,或者我真的不理解这种语言功能。因此,我知道我必须实现Display方法->似乎您在问两个问题,或者至少混合了两个主题。[…]迭代选项向量->在标题中你说的选项,因此是可选向量,而不是选项向量。给我们看看你为解决问题而写的代码怎么样?即使它是超级不完整的,它可能会帮助我们很多!注意:这不是在生产环境中运行的真正代码。要仅打印值,可以通过引用传递这些值。