Crates.io | thunk |
lib.rs | thunk |
version | 0.3.0 |
source | src |
created_at | 2017-05-26 05:44:57.472147 |
updated_at | 2017-08-02 14:52:22.704919 |
description | Primitives for generic lazy evaluation in Rust. This crate requires nightly for `untagged_unions`. |
homepage | https://github.com/sdleffler/thunk-rs |
repository | https://github.com/sdleffler/thunk-rs |
max_upload_size | |
id | 16003 |
size | 41,281 |
N.B. this crate requires nightly, as it makes use of FnBox
and untagged unions.
thunk
: Generic lazy evaluation for RustThe thunk
crate provides primitives for lazy evaluation in Rust.
At present, it provides five thunk types and three traits which abstract lazily
evaluated types, LazyRef
, LazyMut
, and Lazy
. The thunk types are as follows:
Thunk
: non-Send
, non-Sync
thunks.RcThunk
: a reference-counted, cloneable thunk. An RcThunk<T>
is essentially
an Rc<Thunk<T>>
; however, it implements Lazy
.AtomicThunk
: Send + Sync
thunks which use atomic data internally. This is
slower than Thunk
, but AtomicThunk
is thread-safe.ArcThunk
: the Arc
equivalent to RcThunk
. Essentially an
Arc<AtomicThunk<T>>
.Strict
: Send + Sync
, paradoxically strict thunks. Strict
doesn't actually defer anything, and is provided to make it simpler to write
code which is generic over strictness.The provided traits - LazyRef
, LazyMut
, and Lazy
- abstract immutable
references to lazy values, mutable references to lazy values, and owned lazy
values, respectively. For example, Thunk
implements LazyRef
and LazyMut
and
Lazy
; however, RcThunk
only implements LazyRef
. All traits take a lifetime
parameter; this is a bandaid to cover Rust's current lack of associated lifetimes.
This parameter bounds the lifetime of the closure object representing a deferred
computation.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.