#lazy-evaluation #generic #parallel

nightly thunk

Rust 中泛型惰性求值的原始类型。此包需要 nightly 才能使用 untagged_unions

6 个版本

使用旧的 Rust 2015

0.3.0 2017 年 5 月 28 日
0.2.1 2017 年 5 月 27 日
0.1.2 2017 年 5 月 26 日

#959 in 并发

MIT/Apache

30KB
636

Build Status Docs Status On crates.io

注意:此包需要 nightly,因为它使用了 FnBox 和未标记的联合。

thunk:Rust 的泛型惰性求值

thunk 包为 Rust 中的惰性求值提供了原始类型。

目前,它提供了五种 thunk 类型,三种用于抽象惰性求值类型的 trait(LazyRefLazyMutLazy)。thunk 类型如下:

  • Thunk:非 Send、非 Sync 的 thunk。
  • RcThunk:一个引用计数的、可克隆的 thunk。一个 RcThunk<T> 实质上是一个 Rc<Thunk<T>>;然而,它实现了 Lazy
  • AtomicThunkSend + Sync 使用内部原子数据的 thunks。这比 Thunk 慢,但 AtomicThunk 是线程安全的。
  • ArcThunkRcThunkArc 等效。本质上是一个 Arc<AtomicThunk<T>>
  • StrictSend + Sync 的反直觉严格 thunk。 Strict 实际上不会延迟任何操作,它被提供以简化编写泛型严格性的代码。

提供的 trait(LazyRefLazyMutLazy)分别抽象了惰性值的不可变引用、可变引用和所有者惰性值。例如,Thunk 实现 LazyRefLazyMutLazy;然而,RcThunk 只实现了 LazyRef。所有 trait 都接受一个生命周期参数;这是为了解决 Rust 当前缺乏关联生命周期的缺陷。此参数限制了表示延迟计算的闭包对象的生命周期。

许可

许可协议为以下之一:

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,应如上双许可,不附加任何额外条款或条件。

依赖

~11KB