src/instance.rs

branch
dev
changeset 135
087c60877100
parent 134
d65377920b00
equal deleted inserted replaced
134:d65377920b00 135:087c60877100
108 where 108 where
109 D: Decomposition<X>, 109 D: Decomposition<X>,
110 { 110 {
111 /// Decomposes self according to `decomposer`, and evaluate `f` on the result. 111 /// Decomposes self according to `decomposer`, and evaluate `f` on the result.
112 /// Consumes self. 112 /// Consumes self.
113 fn eval_decompose<'b, R>(self, f: impl FnOnce(D::Decomposition<'b>) -> R) -> R 113 fn eval_decompose<'c, R>(self, f: impl FnOnce(D::Decomposition<'c>) -> R) -> R
114 where 114 where
115 R: 'b, 115 X: 'c;
116 X: 'b,
117 Self: 'b;
118 116
119 /// Does a light decomposition of self `decomposer`, and evaluates `f` on the result. 117 /// Does a light decomposition of self `decomposer`, and evaluates `f` on the result.
120 /// Does not consume self. 118 /// Does not consume self.
121 fn eval_ref_decompose<'b, 'c, R, F>(&'b self, f: F) -> R 119 fn eval_ref_decompose<'c, R>(&self, f: impl FnOnce(D::Reference<'c>) -> R) -> R
122 where 120 where
123 X: 'c, 121 X: 'c;
124 Self: 'b,
125 R: 'b,
126 F: FnOnce(D::Reference<'c>) -> R;
127 122
128 /// Returns an owned instance of `X`, cloning or converting non-true instances when necessary. 123 /// Returns an owned instance of `X`, cloning or converting non-true instances when necessary.
129 fn own(self) -> X; 124 fn own(self) -> X;
130 125
131 // ************** automatically implemented methods below from here ************** 126 // ************** automatically implemented methods below from here **************
176 { 171 {
177 f(MyCow::Owned(self)) 172 f(MyCow::Owned(self))
178 } 173 }
179 174
180 #[inline] 175 #[inline]
181 fn eval_ref_decompose<R, F>(&self, f: F) -> R 176 fn eval_ref_decompose<'b, R>(&self, f: impl FnOnce(&'b X) -> R) -> R
182 where 177 where
183 F: for<'a> FnOnce(&'a X) -> R, 178 X: 'b,
179 Self: 'b,
184 { 180 {
185 f(self) 181 f(self)
186 } 182 }
187 183
188 #[inline] 184 #[inline]

mercurial