Warum müssen Elemente auf dem Stapel eine Größe haben, die zum Zeitpunkt der Kompilierung bekannt ist?

Dec 03 2020

Ich verstehe, warum sie eine konstante Größe haben müssen , aber ich verstehe nicht, warum diese Größe beim Kompilieren bekannt sein muss . Sogar C erlaubt Arrays mit variabler Länge auf dem Stapel. Womit hilft diese Einschränkung Rust?

Antworten

4 SebastianRedl Dec 03 2020 at 00:26

Sogar C erlaubt Arrays mit variabler Länge auf dem Stapel.

C kann dies aufgrund seiner trivialen Semantik relativ leicht unterstützen.

Wenn Sie Destruktoren / aufrufen müssen drop, ist dies weitaus weniger trivial, daher hat Rust es anfangs nicht unterstützt, da es sich um einen Implementierungsaufwand handelt und nicht allzu viele Vorteile bietet.

Schließlich wird Rust dies dank RFC 1909 - unsized rvalues ​​- unterstützen (und dies bereits am Abend) .