1pub 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}