Автор разбирает интересный случай оптимизации, которая возможна в C/C++, но недостижима в Rust из-за модели заимствований и строгих правил работы с aliasing.
Речь идёт о ситуации, где компилятор C может агрессивно оптимизировать код, предполагая отсутствие пересечения указателей (если нет
restrict). В Rust же гарантии безопасности требуют, чтобы ссылки не пересекались, и это ограничение мешает сделать такую же оптимизацию, даже если на практике пересечения не происходит.В итоге:
- В C/C++ оптимизация возможна, но небезопасна без явных аннотаций.
- В Rust - безопасность всегда гарантируется, но ценой отказа от определённых оптимизаций.
- Для производительного кода в Rust приходится использовать небезопасные конструкции (
unsafe) или вручную подсказывать компилятору.https://tunglevo.com/note/an-optimization-thats-impossible-in-rust/
👉 @rust_lib
