String 如何延长选项中T的寿命<;T>;
我知道String 如何延长选项中T的寿命<;T>;,string,rust,lifetime,String,Rust,Lifetime,我知道ip的范围在匹配后的代码块中。我的理解是,当代码块退出时,它将释放ip,因此我无法将其分配给server\u 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() }
ip
的范围在匹配后的代码块中。我的理解是,当代码块退出时,它将释放ip
,因此我无法将其分配给server\u 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
}
};
地址
是选项
。然后继续将ip
移出,保留由ip创建的引用。as_slice()
悬空,因为ip
将在该块末尾释放
此级别的主要解决方案是通过使ip
仅引用字符串而不是字符串本身来保持地址
处于活动状态。这是通过将Some(ip)
模式更改为Some(ref ip)
来实现的
您可能希望进一步阅读此特定主题(处理自有数据等,但不是不重要的选项
部分)