gpt4 book ai didi

rust - 临时值被释放不一致

转载 作者:行者123 更新时间:2023-12-03 11:31:09 24 4
gpt4 key购买 nike

为什么这会产生“释放临时值”错误:

    let mut new_string = String::from("test");
new_string.push_str(
if true { &format!("{}","ay") } else { "ay" }
);

有效时:
    let mut new_string = String::from("test");
new_string.push_str(
&format!("{}","ay")
);

游乐场 Link

最佳答案

format!返回一个String(不带&),因此为您提供返回值的所有权。您可以说当前块拥有它。然后将其放在当前块的末尾。


let mut new_string = String::from("test");
new_string.push_str(
if true { &format!("{}","ay") } else { "ay" }
);

这是 { &format!("{}","ay") }。在 }可以使用它之前,将其丢弃在 push_str上。


let mut new_string = String::from("test");
new_string.push_str(
&format!("{}","ay")
);

它生命周期足够长。
new_string.push_str( {&format!("{}","ay")} );之所以有效,是因为花括号已被优化。
new_string.push_str( {
let t = &format!("{}","ay");
t
} );

不起作用。

关于rust - 临时值被释放不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com