2014-10-27 26 views
0

我知道ip在匹配後的代碼塊中有作用域。我的理解是,當代碼塊退出時,它將釋放ip,所以我不能將它分配給server_ip。我如何獲得ip的壽命更長?如何延長選項中T的使用期限<T>

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

回答

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>部分不重要)的一些進一步閱讀。

+0

偉大的文章和感謝您的幫助。 – Bruce 2014-10-27 15:22:41

相關問題