Каков идиоматический способ реализации свойства для большого числа массивов в стабильном Rust? - PullRequest
1 голос
/ 08 марта 2019

Учитывая мою черту T и большой набор массивов std / core ( не срезы ), как я могу сделать реализации T для этих массивов доступными для других ящиков наСтабильный Rust?

Похоже, из моих поисков я могу выбрать только следующие варианты (которые не обойдут эту проблему):

  1. ждать выпуска ржавчины со стабильной реализациейrfc 2000: https://github.com/rust-lang/rust/issues/44580
  2. реализовать черту вручную для каждого массива.

Вариант 1 недопустим.Вариант 2 приводит к очень длительному времени компиляции (особенно когда набор массивов превышает 5000 типов).Сокрытие каждой отдельной реализации за своей собственной функцией, то есть функцией impl-t-for-array-N, условно компилируемой в реализации T для массива [U;N], значительно сокращает время компиляции.(Время компиляции увеличилось с десятков минут до пары секунд).Тем не менее, задержка, вызванная обработкой тысяч функций, все еще заметна.

Является ли использование функций и ручных реализаций наиболее идиоматичным способом решения этой проблемы на устойчивой ржавчине, или я упускаю более идиоматический способ?

1 Ответ

1 голос
/ 08 марта 2019

Использование функций и ручных реализаций является самым идиоматичным способом решения этой проблемы на устойчивой ржавчине

Да.Например, отметьте черту Debug и ее источники - как вы можете видеть, ржавчина использует специальный макрос для реализации его для массивов с длиной <= 32 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...