LINUX.ORG.RU

История изменений

Исправление red75prim, (текущая версия) :

Зачем вносить лишний indirection? Так вместо указателя на объект будет указатель на указатель на объект.

Нет там лишнего разыменования. Vec<T> - это указатель на данные, ёмкость и длина. Ну и до кучи: Box<[T]> - это указатель и длина, Box<[T; N]> - это просто указатель.

Плюс лишняя возможность выстрелить себе в ногу

Это как сказать. Получить панику из-за выхода за границу массива можно с такой-же лёгкостью (или также нелегко, на выбор) как и из-за выхода за границу инициализированной части вектора.

Ну и массив должен быть всегда полностью инициализирован. Если нужно инициализировать его поэлементно, то придётся иметь дело с [MaybeUninit<T>; N] и ансейфом.

Исправление red75prim, :

Зачем вносить лишний indirection? Так вместо указателя на объект будет указатель на указатель на объект.

Нет там лишнего разыменования. Vec - это указатель на данные, ёмкость и длина. Ну и до кучи: Box<[T]> - это указатель и длина, Box<[T; N]> - это просто указатель.

Плюс лишняя возможность выстрелить себе в ногу

Это как сказать. Получить панику из-за выхода за границу массива можно с такой-же лёгкостью (или также нелегко, на выбор) как и из-за выхода за границу инициализированной части вектора.

Ну и массив должен быть всегда полностью инициализирован. Если нужно инициализировать его поэлементно, то придётся иметь дело с [MaybeUninit; N] и ансейфом.

Исходная версия red75prim, :

Зачем вносить лишний indirection? Так вместо указателя на объект будет указатель на указатель на объект.

Нет там лишнего разыменования. Vec - это указатель на данные, ёмкость и длина. Ну и до кучи: Box<[T]> - это указатель и длина, Box<[T; N]> - это просто указатель.

Плюс лишняя возможность выстрелить себе в ногу

Ну это как сказать. Получить панику из-за выхода за границу массива можно с такой-же лёгкостью (или также нелегко, на выбор) как и из-за выхода за границу инициализированной части вектора.

Ну и массив должен быть всегда полностью инициализирован. Если нужно инициализировать его поэлементно, то придётся иметь дело с [MaybeUninit; N] и ансейфом.