2016-12-03 2 views
2

Было бы хорошо, если мы хотим использовать синтаксис метода и отключить оптимизацию интеллектуальных указателей.Почему передача `self` в качестве необработанного указателя не допускается?

fn foo(*const self) // this would not let smart pointer optimizations 
+3

* и отключить оптимизацию интеллектуальных указателей * - какие «оптимизации» вы думаете, '' self'' или '& mut self'? Кроме того, '& self' и' & mut self' не являются «умными указателями». Я мог видеть «ящик» ', называемый умным указателем, [но мало кто знает, что вы можете использовать его как' self'] (http://stackoverflow.com/q/25462935/155423). – Shepmaster

+1

Как я понимаю, ссылки генерируют флаг noalias, и этот флаг вызывает некоторые оптимизации. – ttarikbnr

+0

только ссылки '& mut' генерируют' noalias' (и афаик даже отключен до дальнейшего уведомления из-за ошибок llvm). Не могли бы вы поделиться своим примером использования (пример кода, который показывает, почему '& self' не работает?) –

ответ

1

Потому что никто не просил об этом, что, вероятно, означает, что для него никто не заботился.

Обратите внимание, что поскольку небезопасная семантика Rust не была доработана, это может быть не очень полезно для ставок, чтобы наложение было прекрасным.

Смежные вопросы