锈蚀基准说:
赋值或复合赋值表达式的左操作数是一个lvalue上下文,就像一元借入的单个操作数一样。 ..。 当在lvalue上下文中使用rvalue时,将创建并使用临时的未命名的lvalue。
这种价值提升显然适用于借款:
let ref_to_i32 = &27; // a temporary i32 variable with value 27 is created但是,它似乎不适用于一项任务(尽管引用中提到了所有的lvalue上下文,而不仅仅是借用):
27 = 28; // error[E0070]: invalid left-hand side expressionE0070的错误描述没有提到这种价值提升。这是引用中的一个错误,还是确实有某种方式可以用赋值或复合赋值表达式触发rvalue提升?
还有第三种lvalue上下文,引用也不正确地描述了这类上下文。每当有一个带有ref的模式时,该模式的左绑定值就是lvalue上下文。事实证明,在这种情况下,促销是有效的:
let ref x = 3; // works很明显,升职不适用于(复合)任务?
https://stackoverflow.com/questions/41520642
复制相似问题