Module wyz::pipe [−][src]
Pipe objects into functions, even those not available for dot-call.
Rust restricts the .method()
call syntax to be available only on functions
defined in impl [Trait for] Type
blocks, with language-blessed self
receivers.
This module allows any function to be .call()
ed, with as little overhead as
is possible in the language.
Examples
use wyz::pipe::*; fn double(x: i32) -> i32 { x * 2 } fn double_ref(x: &i32) -> i32 { *x * 2 } assert_eq!(5.pipe(double), 10); assert_eq!(5.pipe_ref(double_ref), 10);
Rust’s automatic de/reference chasing only works for the signatures Rust already
permits in method-call syntax; the Pipe
trait provides methods for certain
reference conversion chasing, but cannot otherwise take advantage of the
language builtin support for such behavior on ordinary methods.
Petition for a |>
operator; sorry.
Traits
Pipe | Permit suffixed call of any function on a value. |
PipeAsRef | Calls the |
PipeBorrow | Calls the |
PipeDeref | Calls the |
PipeRef | Referential piping. |