Hasty Briefsbeta

双语

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结构处理
  • 该特性被认为设计优雅,可能在后缀宏之外也有应用价值,但会引入一些意外行为
  • 正在就该提案征求反馈,特别是关于自动解引用的可变性推断方面