tuples/
tuple_call.rs

1//! Tuple Call
2
3pub trait Tuple0Call {
4    fn call<F: FnOnce() -> O, O>(self, f: F) -> O;
5}
6
7impl Tuple0Call for () {
8    fn call<F: FnOnce() -> O, O>(self, f: F) -> O {
9        f()
10    }
11}
12
13pub trait Tuple1Call<T> {
14    fn call<F: FnOnce(T) -> O, O>(self, f: F) -> O;
15}
16
17impl<T> Tuple1Call<T> for (T,) {
18    fn call<F: FnOnce(T) -> O, O>(self, f: F) -> O {
19        f(self.0)
20    }
21}
22
23include!("./gen/tuple_call.rs");
24
25#[test]
26fn test() {
27    let o = (1, 2, 3).call(|a, b, c| a + b + c);
28    assert_eq!(o, 6);
29}