async_borrow/
tuple.rs

1use crate::{Ref, RefMut};
2
3
4impl<T> Ref<T, ()> {
5    pub fn destructure(self) -> () {
6        self.context(|this, ctx| {
7            let _ = this;
8            drop(ctx)
9        })
10    }
11}
12
13impl<T, B0> Ref<T, (B0,)> {
14    pub fn destructure(self) -> (Ref<T, B0>,) {
15        self.context(|(b0,), ctx| {
16            (
17                ctx.lift_ref(b0),
18            )
19        })
20    }
21}
22
23impl<T, B0, B1> Ref<T, (B0, B1)> {
24    pub fn destructure(self) -> (Ref<T, B0>, Ref<T, B1>) {
25        self.context(|(b0, b1), ctx| {
26            (
27                ctx.lift_ref(b0),
28                ctx.lift_ref(b1)
29            )
30        })
31    }
32}
33
34impl<T, B0, B1, B2> Ref<T, (B0, B1, B2)> {
35    pub fn destructure(self) -> (Ref<T, B0>, Ref<T, B1>, Ref<T, B2>) {
36        self.context(|(b0, b1, b2), ctx| {
37            (
38                ctx.lift_ref(b0),
39                ctx.lift_ref(b1),
40                ctx.lift_ref(b2)
41            )
42        })
43    }
44}
45
46impl<T, B0, B1, B2, B3> Ref<T, (B0, B1, B2, B3)> {
47    pub fn destructure(self) -> (Ref<T, B0>, Ref<T, B1>, Ref<T, B2>, Ref<T, B3>) {
48        self.context(|(b0, b1, b2, b3), ctx| {
49            (
50                ctx.lift_ref(b0),
51                ctx.lift_ref(b1),
52                ctx.lift_ref(b2),
53                ctx.lift_ref(b3)
54            )
55        })
56    }
57}
58
59impl<T> RefMut<T, ()> {
60    pub fn destructure(self) -> () {
61        self.context(|this, ctx| {
62            let _ = this;
63            drop(ctx)
64        })
65    }
66}
67
68impl<T, B0> RefMut<T, (B0,)> {
69    pub fn destructure(self) -> (RefMut<T, B0>,) {
70        self.context(|(b0,), ctx| {
71            (
72                ctx.lift_mut(b0),
73            )
74        })
75    }
76}
77
78impl<T, B0, B1> RefMut<T, (B0, B1)> {
79    pub fn destructure(self) -> (RefMut<T, B0>, RefMut<T, B1>) {
80        self.context(|(b0, b1), ctx| {
81            (
82                ctx.lift_mut(b0),
83                ctx.lift_mut(b1)
84            )
85        })
86    }
87}
88
89impl<T, B0, B1, B2> RefMut<T, (B0, B1, B2)> {
90    pub fn destructure(self) -> (RefMut<T, B0>, RefMut<T, B1>, RefMut<T, B2>) {
91        self.context(|(b0, b1, b2), ctx| {
92            (
93                ctx.lift_mut(b0),
94                ctx.lift_mut(b1),
95                ctx.lift_mut(b2)
96            )
97        })
98    }
99}
100
101impl<T, B0, B1, B2, B3> RefMut<T, (B0, B1, B2, B3)> {
102    pub fn destructure(self) -> (RefMut<T, B0>, RefMut<T, B1>, RefMut<T, B2>, RefMut<T, B3>) {
103        self.context(|(b0, b1, b2, b3), ctx| {
104            (
105                ctx.lift_mut(b0),
106                ctx.lift_mut(b1),
107                ctx.lift_mut(b2),
108                ctx.lift_mut(b3)
109            )
110        })
111    }
112}