|
|
|
|
|
by ithkuil
731 days ago
|
|
Yeah currently "niche optimization" is performed when the compiler can infer that some values of the structure are illegal. This can be currently done when a type declares the range of an integer to not be complete with the rustc_layout_scalar_valid_range_start or _end attribute (requires #![feature(rustc_attrs)]) In your example it works for String, because String contains a Vec<U8> which inside contains a capacity field of type struct Cap(usize) but the usize is effectively constrained to contain values from 0..=max_isize The only way for you to know that is to effectively be the rustc compiler or be able to consume it's output |
|