Учитывая мою черту T
и большой набор массивов std
/ core
( не срезы ), как я могу сделать реализации T
для этих массивов доступными для других ящиков наСтабильный Rust?
Похоже, из моих поисков я могу выбрать только следующие варианты (которые не обойдут эту проблему):
- ждать выпуска ржавчины со стабильной реализациейrfc 2000: https://github.com/rust-lang/rust/issues/44580
- реализовать черту вручную для каждого массива.
Вариант 1 недопустим.Вариант 2 приводит к очень длительному времени компиляции (особенно когда набор массивов превышает 5000 типов).Сокрытие каждой отдельной реализации за своей собственной функцией, то есть функцией impl-t-for-array-N
, условно компилируемой в реализации T
для массива [U;N]
, значительно сокращает время компиляции.(Время компиляции увеличилось с десятков минут до пары секунд).Тем не менее, задержка, вызванная обработкой тысяч функций, все еще заметна.
Является ли использование функций и ручных реализаций наиболее идиоматичным способом решения этой проблемы на устойчивой ржавчине, или я упускаю более идиоматический способ?