Почему элементы в стеке должны иметь размер, известный во время компиляции?
Dec 03 2020
Я понимаю, почему они должны иметь постоянный размер , но не понимаю, почему этот размер должен быть известен во время компиляции . Даже C позволяет использовать в стеке массивы переменной длины. В чем это ограничение помогает Rust?
Ответы
4 SebastianRedl Dec 03 2020 at 00:26
Даже C позволяет использовать в стеке массивы переменной длины.
C может относительно легко поддерживать это из-за своей тривиальной семантики.
Когда вам нужно вызвать деструкторы / drop
, это гораздо менее тривиально, поэтому Rust изначально не поддерживал его, потому что это усилие по реализации и не дает такой большой пользы.
В конце концов, Rust будет поддерживать это (и уже делает это каждую ночь ) благодаря RFC 1909 - unsized rvalues .