@@ -108,12 +108,10 @@ pub struct Recv<A, P> ( PhantomData<(A, P)> );
108
108
pub struct Send < A , P > ( PhantomData < ( A , P ) > ) ;
109
109
110
110
/// Active choice between `P` and `Q`
111
- pub struct Choose2 < P , Q > ( PhantomData < ( P , Q ) > ) ;
112
- pub struct Choose3 < P , Q , R > ( PhantomData < ( P , Q , R ) > ) ;
111
+ pub struct Choose < T > ( PhantomData < T > ) ;
113
112
114
113
/// Passive choice (offer) between `P` and `Q`
115
- pub struct Offer2 < P , Q > ( PhantomData < ( P , Q ) > ) ;
116
- pub struct Offer3 < P , Q , R > ( PhantomData < ( P , Q , R ) > ) ;
114
+ pub struct Offer < T > ( PhantomData < T > ) ;
117
115
118
116
/// Enter a recursive environment
119
117
pub struct Rec < P > ( PhantomData < P > ) ;
@@ -138,20 +136,20 @@ unsafe impl <A, P: HasDual> HasDual for Recv<A, P> {
138
136
type Dual = Send < A , P :: Dual > ;
139
137
}
140
138
141
- unsafe impl < P : HasDual , Q : HasDual > HasDual for Choose2 < P , Q > {
142
- type Dual = Offer2 < P :: Dual , Q :: Dual > ;
139
+ unsafe impl < P : HasDual , Q : HasDual > HasDual for Choose < ( P , Q ) > {
140
+ type Dual = Offer < ( P :: Dual , Q :: Dual ) > ;
143
141
}
144
142
145
- unsafe impl < P : HasDual , Q : HasDual , R : HasDual > HasDual for Choose3 < P , Q , R > {
146
- type Dual = Offer3 < P :: Dual , Q :: Dual , R :: Dual > ;
143
+ unsafe impl < P : HasDual , Q : HasDual , R : HasDual > HasDual for Choose < ( P , Q , R ) > {
144
+ type Dual = Offer < ( P :: Dual , Q :: Dual , R :: Dual ) > ;
147
145
}
148
146
149
- unsafe impl < P : HasDual , Q : HasDual > HasDual for Offer2 < P , Q > {
150
- type Dual = Choose2 < P :: Dual , Q :: Dual > ;
147
+ unsafe impl < P : HasDual , Q : HasDual > HasDual for Offer < ( P , Q ) > {
148
+ type Dual = Choose < ( P :: Dual , Q :: Dual ) > ;
151
149
}
152
150
153
- unsafe impl < P : HasDual , Q : HasDual , R : HasDual > HasDual for Offer3 < P , Q , R > {
154
- type Dual = Choose3 < P :: Dual , Q :: Dual , R :: Dual > ;
151
+ unsafe impl < P : HasDual , Q : HasDual , R : HasDual > HasDual for Offer < ( P , Q , R ) > {
152
+ type Dual = Choose < ( P :: Dual , Q :: Dual , R :: Dual ) > ;
155
153
}
156
154
157
155
unsafe impl HasDual for Var < Z > {
@@ -208,7 +206,7 @@ impl<E, P, A: marker::Send + 'static> Chan<E, Recv<A, P>> {
208
206
}
209
207
}
210
208
211
- impl < E , P , Q > Chan < E , Choose2 < P , Q > > {
209
+ impl < E , P , Q > Chan < E , Choose < ( P , Q ) > > {
212
210
/// Perform an active choice, selecting protocol `P`.
213
211
#[ must_use]
214
212
pub fn sel1 ( self ) -> Chan < E , P > {
@@ -228,7 +226,7 @@ impl<E, P, Q> Chan<E, Choose2<P, Q>> {
228
226
}
229
227
}
230
228
231
- impl < E , P , Q > Chan < E , Offer2 < P , Q > > {
229
+ impl < E , P , Q > Chan < E , Offer < ( P , Q ) > > {
232
230
/// Passive choice. This allows the other end of the channel to select one
233
231
/// of two options for continuing the protocol: either `P` or `Q`.
234
232
#[ must_use]
@@ -244,7 +242,7 @@ impl<E, P, Q> Chan<E, Offer2<P, Q>> {
244
242
}
245
243
}
246
244
247
- impl < E , P , Q , R > Chan < E , Choose3 < P , Q , R > > {
245
+ impl < E , P , Q , R > Chan < E , Choose < ( P , Q , R ) > > {
248
246
/// Perform an active choice, selecting protocol `P`.
249
247
#[ must_use]
250
248
pub fn sel1 ( self ) -> Chan < E , P > {
@@ -273,7 +271,7 @@ impl<E, P, Q, R> Chan<E, Choose3<P, Q, R>> {
273
271
}
274
272
}
275
273
276
- impl < E , P , Q , R > Chan < E , Offer3 < P , Q , R > > {
274
+ impl < E , P , Q , R > Chan < E , Offer < ( P , Q , R ) > > {
277
275
/// Passive choice. This allows the other end of the channel to select one
278
276
/// of two options for continuing the protocol: either `P` or `Q`.
279
277
#[ must_use]
@@ -390,7 +388,7 @@ impl<'c, T> ChanSelect<'c, T> {
390
388
}
391
389
392
390
pub fn add_offer_ret < E , P , Q > ( & mut self ,
393
- chan : & ' c Chan < E , Offer2 < P , Q > > ,
391
+ chan : & ' c Chan < E , Offer < ( P , Q ) > > ,
394
392
ret : T )
395
393
{
396
394
self . chans . push ( ( unsafe { transmute ( chan) } , ret) ) ;
@@ -443,7 +441,7 @@ impl<'c> ChanSelect<'c, usize> {
443
441
}
444
442
445
443
pub fn add_offer < E , P , Q > ( & mut self ,
446
- c : & ' c Chan < E , Offer2 < P , Q > > )
444
+ c : & ' c Chan < E , Offer < ( P , Q ) > > )
447
445
{
448
446
let index = self . chans . len ( ) ;
449
447
self . add_offer_ret ( c, index) ;
0 commit comments