Static rustc_lint::types::VARIANT_SIZE_DIFFERENCES
source · static VARIANT_SIZE_DIFFERENCES: &Lint
Expand description
The variant_size_differences
lint detects enums with widely varying
variant sizes.
§Example
ⓘ
#![deny(variant_size_differences)]
enum En {
V0(u8),
VBig([u8; 1024]),
}
{{produces}}
§Explanation
It can be a mistake to add a variant to an enum that is much larger than the other variants, bloating the overall size required for all variants. This can impact performance and memory usage. This is triggered if one variant is more than 3 times larger than the second-largest variant.
Consider placing the large variant’s contents on the heap (for example
via Box
) to keep the overall size of the enum itself down.
This lint is “allow” by default because it can be noisy, and may not be an actual problem. Decisions about this should be guided with profiling and benchmarking.