Postfix Macros and Let Place
5 months ago
- #rust
- #macros
- #language-design
- 后缀宏允许类似`某物.宏!(x, y, z)`的语法,但因设计问题停滞不前
- '禁止回溯规则'阻止宏导致表达式重新求值,这使得后缀宏设计复杂化
- 提出'部分位置求值'方案,在向宏传递剩余表达式时预计算临时值
- 引入`let place`作为位置别名的实现方式,避免触发位置到值的强制转换,有助于后缀宏实现
- 由于需要根据使用场景推断该用`deref`还是`deref_mut`,自动解引用使`let place`复杂化
- 在MIR中`let place`很简单,它不需要新的操作语义,可用现有MIR结构处理
- 该特性被认为设计优雅,可能在后缀宏之外也有应用价值,但会引入一些意外行为
- 正在就该提案征求反馈,特别是关于自动解引用的可变性推断方面