есть, но на практике ты вряд ли в него упрёшься
131 072 элемента на 2019 год. Сейчас наверное также))
А если я создам тупл из двух туплов которые до предела будут заполнены максимальным количеством элементов?
Экспериментируй: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=5361146b95c3eecddeda29ac1bc372a2
На практике большие tuple бесполезны, так как для tuple размером более 12 элементов не определены Odr, PatialOdr, Eq, PatialEq и т.д.
Вот что то да, помнилось мне число 12 но был уверен с чем оно связано. А если будет два тупла по 12 в одной тупле то будут эти трейты определены?
Я щас трайну в принципе
до 12 в стандартной библиотеке большинство функций и реализаций трейтов вроде
Число 12 связано с отсутствием вариативных дженериков. Дело в том что каждый tuple это уникальный тип, и для, каждого надо имплементировать трейт. Но если для массива есть константные дженерики (const generics), типа impl<const N: usize> Trait for [T; N], то для tuple это пока невозможно.
Понял, ну да в принципе логично
Возможно, с помощью макросов. Системы в bevy это прекрасно демонстрируют (n количество аргументов в сигнатуре функции)
Нет, не возможно в общем случае. Не вешая компилятор намертво конечно😂
Думаю с новым решателем признаков будет возможно. Но это эдак к году 2025...
Обсуждают сегодня