HiveBrain v1.2.0
Get Started
← Back to all entries
gotcharustCritical

Why does Rust not have unions?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
unionshavewhydoesnotrust

Problem

I can think of many places where unions in C help are useful and they save memory. As Rust is a system programming language, why doesn't it support unions?

Solution

Unions were added to the language in (RFC 1444), and they are stable as of Rust 1.19.0. They require usage of unsafe blocks.

Raw unions are not memory-safe (as there is no way for the compiler to guarantee that you always read the correct type (that is, the most recently written type) from the union). One of the goals of Rust is to create a low-level language with memory safety; since unions are not compatible with that goal, they were not included in Rust 1.0.

Instead, Rust has enums, which provide most of the advantages of unions in exchange for a small memory usage, but which are memory safe since the enumeration value always keeps track of which particular type it contains.

Context

Stack Overflow Q#29248665, score: 101

Revisions (0)

No revisions yet.