如何在Option <t> </t>中延长T的生命周期

时间:2014-10-27 05:03:24

标签: string rust lifetime

我理解ip在匹配后的代码块中作用域。我的理解是,当该代码块退出时,它将释放ip,因此我无法将其分配给server_ip。如何让ip延长寿命?

let address_default = "127.0.0.1";
let address = matches.opt_default("i", address_default);

let server_ip = match address {
    Some(ip) => {
        ip.as_slice()
    }
    None => {
        address_default
    }
};

1 个答案:

答案 0 :(得分:2)

addressOption<String>。然后,您正在继续移动ip,将ip.as_slice()悬挂的引用留下,ip将在该块的末尾释放。

此级别的主要解决方案是通过address只将引用设为ip而不是String来保持String有效。本身。这是通过将Some(ip)模式更改为Some(ref ip)来完成的。

您可能希望http://chrismorgan.info/blog/rust-fizzbuzz.html进一步阅读此特定主题(处理拥有的数据等等,但不是Option<T>不重要的部分。)