Lustre 0.7

Lustre 0.7

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2019年11月
SPM支持 SPM

Zachary Waldowski 维护。



Lustre 0.7

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。它是一个字谜。