来自C++,我很惊讶这段代码在Rust中是有效的:
let x = &mut String::new();
x.push_str("Hello!");
在C++中,您不能使用临时的地址,并且临时的时间不会超过它出现在其中的表达式。
临时工在铁锈中生活多长时间?而且由于x
只是一个借方,那么字符串的所有者是谁呢?
为什么借个临时就合法了?
它是合法的,因为在C++中它是非法的--因为有人说它应该是这样的。
临时工在铁锈中生活多长时间?而且由于x
只是一个借方,那么字符串的所有者是谁呢?
参考资料说:
表达式的临时作用域是包含该表达式的最小作用域,用于下列内容之一:
if
、while
或loop
表达式的正文。if
表达式的else
块。if
或while
表达式或match
保护的条件表达式。本质上,您可以将您的代码视为:
let mut a_variable_you_cant_see = String::new();
let x = &mut a_variable_you_cant_see;
x.push_str("Hello!");
另见: