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}