您能解释一下为什么需要此代码吗?

时间:2019-04-01 01:53:49

标签: rust

我正在阅读this,好像不需要一些代码行。

例如,在下面的示例中,“匹配”真的有用吗?为什么需要它?好像是重复代码?也许编译器会解决这个问题,而只是为了表达而编写的?

#[stable(feature = "sockaddr_setters", since = "1.9.0")]
    pub fn set_port(&mut self, new_port: u16) {
        match *self {
            SocketAddr::V4(ref mut a) => a.set_port(new_port),
            SocketAddr::V6(ref mut a) => a.set_port(new_port),
        }
    }

谢谢

1 个答案:

答案 0 :(得分:1)

match是访问内部值所必需的。 SocketAddr可以包含SocketAddrV4SocketAddrV6,因此您需要处理两种可能性。