Lustre
Swift 中对 Result 模式的非完美但更高效的实现。
Lustre 定义了一个接口,包含几个手动特化,以改善对基于 Box<T>
的 Result 类型的编译器推理和运行时性能,例如来自 LlamaKit 的类型。
使用 Lustre 的 Result 类型的日常语法几乎相同,但你必须选择特定的类型来使用 Result 实例。
《code VoidResult》和《code ObjectResult》是完全实现的特化,可直接使用,分别用于无返回结果和引用类型结果。
《code AnyResult》是任何值类型的后备。使用 Any
保存任何 T
。小于 17 字节大小的类型将内联存储,因此所有原始类型和大多数 Swift 集合类型的性能与特化的泛型枚举相同。较大的类型使用 Swift 内部原生缓冲区类型存储。
《code CustomResult》协议用于对已知大小的自定义类型进行手动特化。例如,一个 JSON 解析库可能会提供 JSON
枚举,而 JSONResult
将符合 CustomResult
并包含 .Success(JSON)
情况。
Result<T>
的常见案例实现显然是前进的方向。在 Swift 支持多负载泛型枚举之前,《code Lustre.Result》可以缓解使用基于 Box<T>
的 Result 类型所带来的性能问题。
兼容性
Lustre 旨在 Swift 1.2 上使用。未来版本的兼容性不可保证。
名字怎么了?
结果 =>
Lustre。它是一个字谜。