【发布时间】:2016-12-03 01:24:48
【问题描述】:
当我们想使用方法语法并禁用智能指针优化时会很好。
fn foo(*const self) // this would not let smart pointer optimizations
【问题讨论】:
-
并禁用智能指针优化——您认为
&self或&mut self执行哪些“优化”?此外,&self和&mut self不是“智能指针”。我可以看到Box<Self>被称为智能指针 but not many people know you can use that asself。 -
据我所知,引用会生成 noalias 标志,并且该标志会导致一些优化。
-
只有
&mut引用会生成noalias(并且由于 llvm 错误,即使它已被关闭,直到另行通知)。能否请您分享您的用例(一个代码示例说明为什么&self不起作用) -
只有 &T 引用生成 noalias atm。我在 www.reddit.com/r/rust 上问了一个问题,如果 &mut T 将来会生成 noalias。他们说,在一些 llvm 错误得到修复后,它也会生成 noalias。我想写一些不安全的方法,因为它不安全,我想像 UnsafeCell 语义一样关闭引用优化(noalias,nocapture)。
标签: rust