6 个版本
使用旧的 Rust 2015
0.3.0 | 2017 年 5 月 28 日 |
---|---|
0.2.1 | 2017 年 5 月 27 日 |
0.1.2 | 2017 年 5 月 26 日 |
#959 in 并发
30KB
636 行
注意:此包需要 nightly,因为它使用了 FnBox
和未标记的联合。
thunk
:Rust 的泛型惰性求值
thunk
包为 Rust 中的惰性求值提供了原始类型。
目前,它提供了五种 thunk 类型,三种用于抽象惰性求值类型的 trait(LazyRef
、LazyMut
和 Lazy
)。thunk 类型如下:
Thunk
:非Send
、非Sync
的 thunk。RcThunk
:一个引用计数的、可克隆的 thunk。一个RcThunk<T>
实质上是一个Rc<Thunk<T>>
;然而,它实现了Lazy
。AtomicThunk
:Send + Sync
使用内部原子数据的 thunks。这比Thunk
慢,但AtomicThunk
是线程安全的。ArcThunk
:RcThunk
的Arc
等效。本质上是一个Arc<AtomicThunk<T>>
。Strict
:Send + Sync
的反直觉严格 thunk。Strict
实际上不会延迟任何操作,它被提供以简化编写泛型严格性的代码。
提供的 trait(LazyRef
、LazyMut
和 Lazy
)分别抽象了惰性值的不可变引用、可变引用和所有者惰性值。例如,Thunk
实现 LazyRef
、LazyMut
和 Lazy
;然而,RcThunk
只实现了 LazyRef
。所有 trait 都接受一个生命周期参数;这是为了解决 Rust 当前缺乏关联生命周期的缺陷。此参数限制了表示延迟计算的闭包对象的生命周期。
许可
许可协议为以下之一:
- Apache许可证,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,应如上双许可,不附加任何额外条款或条件。
依赖
~11KB