Как я могу размыть скайбокс в THREE.js?

В настоящее время Rust не поддерживает абстрагирование над изменчивостью.

Есть некоторые способы, которыми это может быть достигнуто, хотя они не идеальны:

  • Используйте макрос для развернуть дублирующий код, объявить макрос и поделиться между обеими функциями - нужно сконструировать, чтобы он работал для изменяемого и неизменяемого, конечно.
  • Напишите неизменяемую версию функции (чтобы гарантировать, что ничего не изменилось) затем напишите функцию-обертку для изменяемой версии, которая выполняет unsafe приведение результата, чтобы сделать его изменчивым.

Ни один из них не очень привлекателен (макрос слишком многословный и немного менее читаемый, добавляет некоторый код-раздувание), unsafe более читабельна, но было бы неплохо избежать, поскольку отличать от неизменяемого до изменяемого не так приятно иметь через базу кода.

На данный момент лучший вариант, насколько я могу видеть (где код для копирования не подходит), заключается в том, чтобы написать неизменяемую версию функции, а затем обернуть ее с помощью mut версии функции, где бот h входы и выходы изменяемы.

Для этого требуется выход unsafe на выходе функции, поэтому он не идеален.


Примечание: важно иметь неизменяемая функция содержит тело кода, так как обратное позволит случайным образом изменить то, что может быть неизменным.

0
задан user2331095 27 March 2019 в 03:45
поделиться