我未能理解如何迭代Vec
Option
个Display
并仅在符合特定条件时才采取行动。
具体来说,我正在开发一个网络应用程序,我希望迭代网络接口(IPv4或IPv6)的所有可能IP地址,并且只对v4地址执行某些操作。在这种情况下,我想打印它们,所以我知道我必须实现Debug
。
使用Some([V6(fe80::6a5b:35ff:fec7:5eeb), V4(10.0.11.241)])
格式化程序打印我的值,我得到:
Option<Vec<std::net::IpAddr>>
这是V4
。我想迭代向量并通过Display
实现打印我遇到的每个pub enum IpAddr {
V4(Ipv4Addr),
V6(Ipv6Addr),
}
地址。
请注意,std::net::IpAddr
定义为
V4
如何匹配类型的枚举(仅在我的情况下为jit
)?
答案 0 :(得分:3)
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)
}
}
}
}
有关详细信息,请参阅以下The Rust Programming Language部分: