#内存布局 #控制 #显式 #选项 #变体 #模式 #细分市场

controlled-option

具有显式控制细分市场和内存布局的定制 Option 类型

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

Download history 99/week @ 2024-04-06 149/week @ 2024-04-13 135/week @ 2024-04-20 122/week @ 2024-04-27 269/week @ 2024-05-04 326/week @ 2024-05-11 169/week @ 2024-05-18 317/week @ 2024-05-25 267/week @ 2024-06-01 328/week @ 2024-06-08 251/week @ 2024-06-15 168/week @ 2024-06-22 222/week @ 2024-06-29 182/week @ 2024-07-06 222/week @ 2024-07-13 148/week @ 2024-07-20

每月下载 804
用于 7 个 Crates (2 个直接使用)

MIT/Apache 许可

19KB
457

controlled-option

此 crate 提供了对标准 Option 的自定义实现,其中您可以显式控制 None 变体在内存中的布局。


lib.rs:

此 crate 提供了对标准 Option 类型的替代方案,其中您可以完全控制 NoneSome 变体在内存中的表示。

通常情况下,您不需要考虑这一点。标准的 Option 是一个完全正常的 enum,编译器会负责确定最有效的内存表示。特别是,编译器知道某些类型有 细分市场 —— 不表示类型有效值的内存位模式。如果一个类型有细分市场,那么编译器可以使用该位模式来表示 None 变体。这对于您可能关心的大多数类型都自动工作:特别是对于引用和 std::num 中的各种 NonZero 类型。

然而,有时一个类型有 多个 可行的细分市场,并且您需要控制编译器选择使用哪一个。或者,您可能定义了一个类型,编译器无法看到它有一个可用的细分市场。在这种情况下,您可以使用此 crate 中的 NicheControlledOption 类型来完全控制 NoneSome 变体在内存中的布局。

依赖关系

~1.5MB
~35K SLoC