Можно ли управлять размером массива с помощью параметра типа общего?

Далее следует только пример и недопустимый код Rust.

struct Vec { a: [T; Count] } 

Что-то вроде этого возможно в шаблонах C ++, но я не видел его в Rust.

Если вы посмотрите на дизайн Rust, вы заметите, что сначала он занялся решением самых сложных проблем (без памяти, без данных), но в остальном есть много областей, где он «неполный» (по сравнению с тем, что может быть достигнута).

В частности, общие структуры и функции сегодня несколько ограничены:

  • отсутствие типов более высокого качества (HKT)
  • отсутствие параметров не-типа => массивы являются специальными, а реализация признака для массива – известная проблема , при этом работа заключается в ее реализации для нескольких разных измерений
  • отсутствие вариационных параметров => кортежи имеют специальную обертку, а реализация признака для всех кортежей аналогично сложна

На данный момент они не реализованы, а не потому, что они не желательны, а просто потому, что времени не хватает. Идея Rust 1.0 заключалась в том, чтобы не выпускать конечный продукт, который не эволюционировал бы, а стабильная база для начала; некоторые или, возможно, все придут.

Что касается дорожной карты? Ну, нет, я знаю, хотя пост-1.0 уверен, я приглашаю вас ухать на землю.

Ожидая, что Rust получит первоclassную поддержку для этого, есть ящики, которые обеспечивают определенные уровни этой функциональности, такие как:

  • typenum
  • родовой-массив
  • Не может заимствовать как неизменяемый, поскольку он также заимствован как изменяемый в аргументах функции
  • Как преобразовать String в & 'static str
  • Условно перебрать один из нескольких возможных iteratorов
  • Печатает! заимствовать или владеть переменной?
  • Инициализировать большой массив фиксированного размера с типами без копирования
  • Взаимозаменяем одно поле структуры при заимствовании другого в закрытии
  • Могу ли я делать интроспекцию типа с объектами признаков, а затем опускать ее?
  • Почему законно занимать временное?
  • Как синтаксис отличается от регулярной привязки к жизни?
  • Как вы можете сделать безопасный статический синглтон в Rust?
  • Почему черта не реализована для типа, который ее явно реализовал?
  • Interesting Posts
    Давайте будем гением компьютера.