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. |