Trait tuppipe::Pipe

source ·
pub trait Pipe<T> {
    type Output;

    // Required method
    fn complete(self, value: T) -> Self::Output;
}
Expand description

The Pipe trait has to be implemented by, well… pipes. Anything that implements this is usable as a pipe where the item in the pipeline (at said pipe’s position) is of type T.

§Implementing your own pipe

The Pipe trait is public, meaning you can totally implement your own pipes. Here is an example of how.

use tuppipe::*;

struct Subtractor<const N: i32>;

impl<const N: i32> Pipe<i32> for Subtractor<N> {
    type Output = i32;

    fn complete(self, value: i32) -> Self::Output {
        value - N
    }
}

assert_eq!(-2, pipe(0) >> Subtractor::<2>)

Required Associated Types§

Required Methods§

source

fn complete(self, value: T) -> Self::Output

Complete a given pipe.

Implementations on Foreign Types§

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10, RP11, RP12, RP13, RP14, RP15, RP16> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>, P11: Pipe<RP10, Output = RP11>, P12: Pipe<RP11, Output = RP12>, P13: Pipe<RP12, Output = RP13>, P14: Pipe<RP13, Output = RP14>, P15: Pipe<RP14, Output = RP15>, P16: Pipe<RP15, Output = RP16>,

§

type Output = RP16

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10, RP11, RP12, RP13, RP14, RP15> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>, P11: Pipe<RP10, Output = RP11>, P12: Pipe<RP11, Output = RP12>, P13: Pipe<RP12, Output = RP13>, P14: Pipe<RP13, Output = RP14>, P15: Pipe<RP14, Output = RP15>,

§

type Output = RP15

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10, RP11, RP12, RP13, RP14> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>, P11: Pipe<RP10, Output = RP11>, P12: Pipe<RP11, Output = RP12>, P13: Pipe<RP12, Output = RP13>, P14: Pipe<RP13, Output = RP14>,

§

type Output = RP14

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10, RP11, RP12, RP13> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>, P11: Pipe<RP10, Output = RP11>, P12: Pipe<RP11, Output = RP12>, P13: Pipe<RP12, Output = RP13>,

§

type Output = RP13

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10, RP11, RP12> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>, P11: Pipe<RP10, Output = RP11>, P12: Pipe<RP11, Output = RP12>,

§

type Output = RP12

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10, RP11> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>, P11: Pipe<RP10, Output = RP11>,

§

type Output = RP11

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9, RP10> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>, P10: Pipe<RP9, Output = RP10>,

§

type Output = RP10

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8, RP9> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8, P9)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>, P9: Pipe<RP8, Output = RP9>,

§

type Output = RP9

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, P8, RP1, RP2, RP3, RP4, RP5, RP6, RP7, RP8> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7, P8)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>, P8: Pipe<RP7, Output = RP8>,

§

type Output = RP8

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, P7, RP1, RP2, RP3, RP4, RP5, RP6, RP7> Pipe<T> for (P1, P2, P3, P4, P5, P6, P7)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>, P7: Pipe<RP6, Output = RP7>,

§

type Output = RP7

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, P6, RP1, RP2, RP3, RP4, RP5, RP6> Pipe<T> for (P1, P2, P3, P4, P5, P6)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>, P6: Pipe<RP5, Output = RP6>,

§

type Output = RP6

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, P5, RP1, RP2, RP3, RP4, RP5> Pipe<T> for (P1, P2, P3, P4, P5)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>, P5: Pipe<RP4, Output = RP5>,

§

type Output = RP5

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, P4, RP1, RP2, RP3, RP4> Pipe<T> for (P1, P2, P3, P4)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>, P4: Pipe<RP3, Output = RP4>,

§

type Output = RP4

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, P3, RP1, RP2, RP3> Pipe<T> for (P1, P2, P3)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>, P3: Pipe<RP2, Output = RP3>,

§

type Output = RP3

source§

fn complete(self, value: T) -> Self::Output

source§

impl<T, P1, P2, RP1, RP2> Pipe<T> for (P1, P2)
where P1: Pipe<T, Output = RP1>, P2: Pipe<RP1, Output = RP2>,

§

type Output = RP2

source§

fn complete(self, value: T) -> Self::Output

Implementors§

source§

impl<'value, P, T> Pipe<&'value T> for Also<'value, P, T>
where P: for<'local> Pipe<&'local T, Output = ()>,

source§

impl<'value, P, T> Pipe<&'value mut T> for Also<'value, P, T>
where P: for<'local> Pipe<&'local T, Output = ()>,

source§

impl<'value, P, T> Pipe<&'value mut T> for AlsoMut<'value, P, T>
where P: for<'local> Pipe<&'local mut T, Output = ()>,

source§

impl<F: FnOnce(T) -> R, T, R> Pipe<T> for F

§

type Output = R

source§

impl<P, T> Pipe<T> for Also<'_, P, T>
where P: for<'local> Pipe<&'local T, Output = ()>,

§

type Output = T

source§

impl<P, T> Pipe<T> for AlsoMut<'_, P, T>
where P: for<'local> Pipe<&'local mut T, Output = ()>,

§

type Output = T