Module carboxyl::lift
+
+ [−]
+
+ [src]
+Lifting of n-ary functions.
+ +A lift maps a function on values to a function on signals. Given a function of
+type F: Fn(A, B, …) -> R
and signals of types Signal<A>, Signal<B>, …
the
+lift!
macro creates a Signal<R>
, whose content is computed using the
+function.
Currently lift is only implemented for functions with up to four arguments. +This limitation is due to the current implementation strategy (and maybe +limitations of Rust's type system), but it can be increased to arbitrary but +finite arity if required.
+ +Example
+let sink_a = Sink::new(); +let sink_b = Sink::new(); +let product = lift!( + |a, b| a * b, + &sink_a.stream().hold(0), + &sink_b.stream().hold(0) +); +assert_eq!(product.sample(), 0); +sink_a.send(3); +sink_b.send(5); +assert_eq!(product.sample(), 15); ++
Functions
+lift0 | +
+ Lift a 0-ary function. + + |
+
lift1 | +
+ Lift a unary function. + + |
+
lift2 | +
+ Lift a binary function. + + |
+
lift3 | +
+ Lift a ternary function. + + |
+
lift4 | +
+ Lift a quarternary function. + + |
+