5 个版本 (3 个重大变更)
0.4.1 | 2021 年 8 月 24 日 |
---|---|
0.4.0 | 2021 年 8 月 24 日 |
0.3.0 | 2021 年 8 月 24 日 |
0.2.0 | 2021 年 8 月 24 日 |
0.1.0 | 2021 年 8 月 23 日 |
在 文本处理 中排名第 874
每月下载 804 次
用于 7 个 Crates (2 个直接使用)
19KB
457 行
controlled-option
此 crate 提供了对标准 Option
的自定义实现,其中您可以显式控制 None
变体在内存中的布局。
lib.rs
:
此 crate 提供了对标准 Option
类型的替代方案,其中您可以完全控制 None
和 Some
变体在内存中的表示。
通常情况下,您不需要考虑这一点。标准的 Option
是一个完全正常的 enum
,编译器会负责确定最有效的内存表示。特别是,编译器知道某些类型有 细分市场 —— 不表示类型有效值的内存位模式。如果一个类型有细分市场,那么编译器可以使用该位模式来表示 None
变体。这对于您可能关心的大多数类型都自动工作:特别是对于引用和 std::num
中的各种 NonZero
类型。
然而,有时一个类型有 多个 可行的细分市场,并且您需要控制编译器选择使用哪一个。或者,您可能定义了一个类型,编译器无法看到它有一个可用的细分市场。在这种情况下,您可以使用此 crate 中的 Niche
和 ControlledOption
类型来完全控制 None
和 Some
变体在内存中的布局。
依赖关系
~1.5MB
~35K SLoC