首页 > 解决方案 > 我可以制作 size_of::>() == size_of::() 通过告诉编译器哪些值永远不会被 `MyType` 占用?

问题描述

我有这种类型:

struct Foo(u32);

我使用 的方式Foo,我知道u32内部永远无法保存该值u32::max_value()(但 的所有其他值u32)。在我的应用程序中,我需要存储许多. 因此,如果只占用 32 位内存,而不是 64 位Option<Foo>将非常有帮助。Option<Foo>Option<u32>

我知道 Rust 会针对Option<&T>它知道&T永远不会有零值的类型执行这种优化。而且我还听说了一些不错的内存布局优化,它们在不久前被合并了。

我可以以某种方式告知编译器这种可能的内存布局优化吗?


如果这在我的确切情况下是不可能的,是否有可能,如果......

标签: rustmemory-layout

解决方案


推荐阅读