|
|
|
|
|
by LegionMammal978
1003 days ago
|
|
Unfortunately, this can't really be done efficiently with how allocation works in Rust. A String is always allocated with alignment 1, but an Arc's control block requires usize alignment. An allocated pointer can't be deallocated with a different alignment than it was allocated with, nor can its alignment be changed when it is reallocated. Thus, the from_raw_parts() idea would be unusable for any types with less than usize alignment. (And the control block really does need to be aligned, since otherwise we couldn't perform atomic operations on it.) |
|
I'll add this to my list of reasons why alignment is terrible.