В C ++ шаблоны выражений — это метод, который опирается на знания компилятора о выражениях в коде C ++ для их упрощения и оптимизации за пределы того, что было бы возможно в процедурной программе. Это мощная техника, используемая, например, матричные библиотеки Eigen и Armadillo для ускорения некоторых сложных операций над матрицами. неполная вики-страница на веб-странице Eigen почти начинает объяснять это.
Интересно, существует ли подобный метод в Rust, то есть есть ли способ заставить компилятор Rust оптимизировать определенные выражения во время компиляции, чтобы создать наименьшее количество временных значений?
Если я читаю Шаблоны выражений Хорошо, тогда вы можете увидеть их в действии с Rust Iterators: такими методами, как фильтр, принимать, etc и т.д. возвращают шаблон выражения, структуру, которая представляет вычисление, но не выполняет его до тех пор, пока не будет запрошено. Это дает необходимую вам оптимизацию сразу, временные файлы не создаются.
С использованием где Я полагаю, что можно написать специализации для дальнейшей оптимизации определенных комбинаций вычислений.