首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不像引用中指定的那样将这个rvalue提升为lvalue?

为什么不像引用中指定的那样将这个rvalue提升为lvalue?
EN

Stack Overflow用户
提问于 2017-01-07 10:55:21
回答 1查看 593关注 0票数 6

锈蚀基准说:

赋值或复合赋值表达式的左操作数是一个lvalue上下文,就像一元借入的单个操作数一样。 ..。 当在lvalue上下文中使用rvalue时,将创建并使用临时的未命名的lvalue。

这种价值提升显然适用于借款:

代码语言:javascript
复制
let ref_to_i32 = &27;  // a temporary i32 variable with value 27 is created

但是,它似乎不适用于一项任务(尽管引用中提到了所有的lvalue上下文,而不仅仅是借用):

代码语言:javascript
复制
27 = 28;   // error[E0070]: invalid left-hand side expression

E0070的错误描述没有提到这种价值提升。这是引用中的一个错误,还是确实有某种方式可以用赋值或复合赋值表达式触发rvalue提升?

还有第三种lvalue上下文,引用也不正确地描述了这类上下文。每当有一个带有ref的模式时,该模式的左绑定值就是lvalue上下文。事实证明,在这种情况下,促销是有效的:

代码语言:javascript
复制
let ref x = 3;  // works

很明显,升职不适用于(复合)任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 14:28:01

自从这个问题发布以来,参考文献就被更新了。现在它说在赋值过程中不发生对lvalue提升的rvalue,所以这显然是旧引用中的一个错误。

借用算子

如果将& or &mut运算符应用于rvalue,则会创建临时值。

这可能也适用于ref绑定,尽管我没有明确提到它。

分配

左操作数必须是lvalue:使用rvalue会导致编译器错误,而不是将其提升为临时操作数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41520642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档