Łuk*_*Lew 3 calling-convention rust
有些语言,如Haskell,不区分传值和传递引用.然后,编译器可以使用启发式近似地选择最有效的调用约定.一个启发式示例是针对Linux x64 ABI:如果参数的大小大于16个字节,则将指针传递给堆栈,否则传递寄存器中的值.
在Rust中同时保留传值和传递引用(当然不可变)的概念有什么好处,并迫使用户选择?
可能是这样的情况,如果看到值被修改,那么pass-by-value是pass-by-reference + copy的语法糖?
两件事情:
换句话说,在Rust中,这两种形式具有不同的语义.但这并不妨碍进行优化.