Почему элементы в стеке должны иметь размер, известный во время компиляции?

Dec 03 2020

Я понимаю, почему они должны иметь постоянный размер , но не понимаю, почему этот размер должен быть известен во время компиляции . Даже C позволяет использовать в стеке массивы переменной длины. В чем это ограничение помогает Rust?

Ответы

4 SebastianRedl Dec 03 2020 at 00:26

Даже C позволяет использовать в стеке массивы переменной длины.

C может относительно легко поддерживать это из-за своей тривиальной семантики.

Когда вам нужно вызвать деструкторы / drop, это гораздо менее тривиально, поэтому Rust изначально не поддерживал его, потому что это усилие по реализации и не дает такой большой пользы.

В конце концов, Rust будет поддерживать это (и уже делает это каждую ночь ) благодаря RFC 1909 - unsized rvalues .