Skip to content

Commit daf2fe7

Browse files
committed
Swap the order of promise()
Closes #4
1 parent 9e3f413 commit daf2fe7

File tree

4 files changed

+109
-109
lines changed

4 files changed

+109
-109
lines changed

src/promise.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ struct Inner<T, E> {
5454
/// ```
5555
/// use futures::*;
5656
///
57-
/// let (p, c) = promise::<i32, i32>();
57+
/// let (c, p) = promise::<i32, i32>();
5858
///
5959
/// p.map(|i| {
6060
/// println!("got: {}", i);
6161
/// }).forget();
6262
///
6363
/// c.finish(3);
6464
/// ```
65-
pub fn promise<T, E>() -> (Promise<T, E>, Complete<T, E>)
65+
pub fn promise<T, E>() -> (Complete<T, E>, Promise<T, E>)
6666
where T: Send + 'static,
6767
E: Send + 'static,
6868
{
@@ -82,7 +82,7 @@ pub fn promise<T, E>() -> (Promise<T, E>, Complete<T, E>)
8282
inner: inner,
8383
completed: false,
8484
};
85-
(promise, complete)
85+
(complete, promise)
8686
}
8787

8888
impl<T, E> Complete<T, E>

tests/all.rs

Lines changed: 77 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -179,23 +179,23 @@ fn flatten() {
179179
#[test]
180180
fn smoke_promise() {
181181
assert_done(|| {
182-
let (p, c) = promise();
182+
let (c, p) = promise();
183183
c.finish(1);
184184
p
185185
}, ok(1));
186186
assert_done(|| {
187-
let (p, c) = promise();
187+
let (c, p) = promise();
188188
c.fail(1);
189189
p
190190
}, err(1));
191191
let mut completes = Vec::new();
192192
assert_empty(|| {
193193
let (a, b) = promise::<i32, u32>();
194-
completes.push(b);
195-
a
194+
completes.push(a);
195+
b
196196
});
197197

198-
let (mut p, c) = promise::<i32, u32>();
198+
let (c, mut p) = promise::<i32, u32>();
199199
drop(c);
200200
assert_panic(p.poll(&Tokens::all()).expect("should be done"));
201201
assert_panic(p.poll(&Tokens::all()).expect("should be done2"));
@@ -209,120 +209,120 @@ fn smoke_promise() {
209209
#[test]
210210
fn select_cancels() {
211211
let ((a, b), (c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
212-
let ((atx, arx), (ctx, crx)) = (channel(), channel());
213-
let a = a.map(move |a| { atx.send(a).unwrap(); a });
214-
let c = c.map(move |c| { ctx.send(c).unwrap(); c });
212+
let ((btx, brx), (dtx, drx)) = (channel(), channel());
213+
let b = b.map(move |b| { btx.send(b).unwrap(); b });
214+
let d = d.map(move |d| { dtx.send(d).unwrap(); d });
215215

216-
let mut f = a.select(c).then(unselect);
216+
let mut f = b.select(d).then(unselect);
217217
// assert!(f.poll(&Tokens::all()).is_none());
218-
assert!(arx.try_recv().is_err());
219-
assert!(crx.try_recv().is_err());
220-
b.finish(1);
218+
assert!(brx.try_recv().is_err());
219+
assert!(drx.try_recv().is_err());
220+
a.finish(1);
221221
// f.schedule(|_| ());
222222
assert!(f.poll(&Tokens::all()).is_some());
223-
assert_eq!(arx.recv().unwrap(), 1);
224-
drop((d, f));
225-
assert!(crx.recv().is_err());
223+
assert_eq!(brx.recv().unwrap(), 1);
224+
drop((c, f));
225+
assert!(drx.recv().is_err());
226226

227227
let ((a, b), (c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
228-
let ((atx, _arx), (ctx, crx)) = (channel(), channel());
229-
let a = a.map(move |a| { atx.send(a).unwrap(); a });
230-
let c = c.map(move |c| { ctx.send(c).unwrap(); c });
228+
let ((btx, _brx), (dtx, drx)) = (channel(), channel());
229+
let b = b.map(move |b| { btx.send(b).unwrap(); b });
230+
let d = d.map(move |d| { dtx.send(d).unwrap(); d });
231231

232232
let (tx, rx) = channel();
233233
let tx = Mutex::new(tx);
234-
let mut f = a.select(c).then(unselect);
234+
let mut f = b.select(d).then(unselect);
235235
assert!(f.poll(&Tokens::all()).is_none());
236236
f.schedule(Arc::new(move |_: &Tokens| tx.lock().unwrap().send(()).unwrap()));
237237
assert!(rx.try_recv().is_err());
238-
b.finish(1);
238+
a.finish(1);
239239
assert!(rx.recv().is_ok());
240240
assert!(f.poll(&Tokens::all()).is_some());
241241
assert_panic(f.poll(&Tokens::all()).unwrap());
242-
drop((d, f));
243-
assert!(crx.recv().is_err());
242+
drop((c, f));
243+
assert!(drx.recv().is_err());
244244
}
245245

246246
#[test]
247247
fn join_cancels() {
248248
let ((a, b), (c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
249-
let ((atx, _arx), (ctx, crx)) = (channel(), channel());
250-
let a = a.map(move |a| { atx.send(a).unwrap(); a });
251-
let c = c.map(move |c| { ctx.send(c).unwrap(); c });
249+
let ((btx, _brx), (dtx, drx)) = (channel(), channel());
250+
let b = b.map(move |b| { btx.send(b).unwrap(); b });
251+
let d = d.map(move |d| { dtx.send(d).unwrap(); d });
252252

253-
let mut f = a.join(c);
254-
b.fail(1);
253+
let mut f = b.join(d);
254+
a.fail(1);
255255
assert!(f.poll(&Tokens::all()).is_some());
256-
drop((d, f));
257-
assert!(crx.recv().is_err());
256+
drop((c, f));
257+
assert!(drx.recv().is_err());
258258

259259
let ((a, b), (c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
260-
let ((atx, _arx), (ctx, crx)) = (channel(), channel());
261-
let a = a.map(move |a| { atx.send(a).unwrap(); a });
262-
let c = c.map(move |c| { ctx.send(c).unwrap(); c });
260+
let ((btx, _brx), (dtx, drx)) = (channel(), channel());
261+
let b = b.map(move |b| { btx.send(b).unwrap(); b });
262+
let d = d.map(move |d| { dtx.send(d).unwrap(); d });
263263

264264
let (tx, rx) = channel();
265265
let tx = Mutex::new(tx);
266-
let mut f = a.join(c);
266+
let mut f = b.join(d);
267267
f.schedule(Arc::new(move |_: &Tokens| tx.lock().unwrap().send(()).unwrap()));
268268
assert!(rx.try_recv().is_err());
269-
b.fail(1);
269+
a.fail(1);
270270
assert!(f.poll(&Tokens::all()).is_some());
271271
assert_panic(f.poll(&Tokens::all()).unwrap());
272-
drop((d, f));
273-
assert!(crx.recv().is_err());
272+
drop((c, f));
273+
assert!(drx.recv().is_err());
274274
}
275275

276276
#[test]
277277
fn join_incomplete() {
278278
let (a, b) = promise::<i32, u32>();
279-
let mut f = f_ok(1).join(a);
279+
let mut f = f_ok(1).join(b);
280280
assert!(f.poll(&Tokens::all()).is_none());
281281
let (tx, rx) = channel();
282282
f.map(move |r| tx.send(r).unwrap()).forget();
283283
assert!(rx.try_recv().is_err());
284-
b.finish(2);
284+
a.finish(2);
285285
assert_eq!(rx.recv().unwrap(), (1, 2));
286286

287287
let (a, b) = promise::<i32, u32>();
288-
let mut f = a.join(f_ok(2));
288+
let mut f = b.join(f_ok(2));
289289
assert!(f.poll(&Tokens::all()).is_none());
290290
let (tx, rx) = channel();
291291
f.map(move |r| tx.send(r).unwrap()).forget();
292292
assert!(rx.try_recv().is_err());
293-
b.finish(1);
293+
a.finish(1);
294294
assert_eq!(rx.recv().unwrap(), (1, 2));
295295

296296
let (a, b) = promise::<i32, u32>();
297-
let mut f = f_ok(1).join(a);
297+
let mut f = f_ok(1).join(b);
298298
assert!(f.poll(&Tokens::all()).is_none());
299299
let (tx, rx) = channel();
300300
f.map_err(move |r| tx.send(r).unwrap()).forget();
301301
assert!(rx.try_recv().is_err());
302-
b.fail(2);
302+
a.fail(2);
303303
assert_eq!(rx.recv().unwrap(), 2);
304304

305305
let (a, b) = promise::<i32, u32>();
306-
let mut f = a.join(f_ok(2));
306+
let mut f = b.join(f_ok(2));
307307
assert!(f.poll(&Tokens::all()).is_none());
308308
let (tx, rx) = channel();
309309
f.map_err(move |r| tx.send(r).unwrap()).forget();
310310
assert!(rx.try_recv().is_err());
311-
b.fail(1);
311+
a.fail(1);
312312
assert_eq!(rx.recv().unwrap(), 1);
313313
}
314314

315315
#[test]
316316
fn cancel_propagates() {
317-
let mut f = promise::<i32, u32>().0.then(|_| -> Done<i32, u32> { panic!() });
317+
let mut f = promise::<i32, u32>().1.then(|_| -> Done<i32, u32> { panic!() });
318318
assert_panic(f.poll(&Tokens::all()).unwrap());
319-
let mut f = promise::<i32, u32>().0.and_then(|_| -> Done<i32, u32> { panic!() });
319+
let mut f = promise::<i32, u32>().1.and_then(|_| -> Done<i32, u32> { panic!() });
320320
assert_panic(f.poll(&Tokens::all()).unwrap());
321-
let mut f = promise::<i32, u32>().0.or_else(|_| -> Done<i32, u32> { panic!() });
321+
let mut f = promise::<i32, u32>().1.or_else(|_| -> Done<i32, u32> { panic!() });
322322
assert_panic(f.poll(&Tokens::all()).unwrap());
323-
let mut f = promise::<i32, u32>().0.map(|_| panic!());
323+
let mut f = promise::<i32, u32>().1.map(|_| panic!());
324324
assert_panic(f.poll(&Tokens::all()).unwrap());
325-
let mut f = promise::<i32, u32>().0.map_err(|_| panic!());
325+
let mut f = promise::<i32, u32>().1.map_err(|_| panic!());
326326
assert_panic(f.poll(&Tokens::all()).unwrap());
327327
}
328328

@@ -359,71 +359,71 @@ fn select2() {
359359
// get the notification of the second one.
360360
{
361361
let ((a, b), (c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
362-
let f = a.select(c);
362+
let f = b.select(d);
363363
let (tx, rx) = channel();
364364
f.map(move |r| tx.send(r).unwrap()).forget();
365-
b.finish(1);
365+
a.finish(1);
366366
let (val, next) = rx.recv().unwrap();
367367
assert_eq!(val, 1);
368368
let (tx, rx) = channel();
369369
next.map_err(move |r| tx.send(r).unwrap()).forget();
370370
assert_eq!(rx.try_recv().err().unwrap(), TryRecvError::Empty);
371-
d.fail(2);
371+
c.fail(2);
372372
assert_eq!(rx.recv().unwrap(), 2);
373373
}
374374

375375
// Fail the second half and ensure that we see the first one finish
376376
{
377377
let ((a, b), (c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
378-
let f = a.select(c);
378+
let f = b.select(d);
379379
let (tx, rx) = channel();
380380
f.map_err(move |r| tx.send(r).unwrap()).forget();
381-
d.fail(1);
381+
c.fail(1);
382382
let (val, next) = rx.recv().unwrap();
383383
assert_eq!(val, 1);
384384
let (tx, rx) = channel();
385385
next.map(move |r| tx.send(r).unwrap()).forget();
386386
assert_eq!(rx.try_recv().err().unwrap(), TryRecvError::Empty);
387-
b.finish(2);
387+
a.finish(2);
388388
assert_eq!(rx.recv().unwrap(), 2);
389389
}
390390

391391
// Cancelling the first half should cancel the second
392392
{
393-
let ((a, _b), (c, _d)) = (promise::<i32, u32>(), promise::<i32, u32>());
394-
let ((atx, arx), (ctx, crx)) = (channel(), channel());
395-
let a = a.map(move |v| { atx.send(v).unwrap(); v });
396-
let c = c.map(move |v| { ctx.send(v).unwrap(); v });
397-
let f = a.select(c);
393+
let ((_a, b), (_c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
394+
let ((btx, brx), (dtx, drx)) = (channel(), channel());
395+
let b = b.map(move |v| { btx.send(v).unwrap(); v });
396+
let d = d.map(move |v| { dtx.send(v).unwrap(); v });
397+
let f = b.select(d);
398398
drop(f);
399-
assert!(crx.recv().is_err());
400-
assert!(arx.recv().is_err());
399+
assert!(drx.recv().is_err());
400+
assert!(brx.recv().is_err());
401401
}
402402

403403
// Cancel after a schedule
404404
{
405-
let ((a, _b), (c, _d)) = (promise::<i32, u32>(), promise::<i32, u32>());
406-
let ((atx, arx), (ctx, crx)) = (channel(), channel());
407-
let a = a.map(move |v| { atx.send(v).unwrap(); v });
408-
let c = c.map(move |v| { ctx.send(v).unwrap(); v });
409-
let mut f = a.select(c);
405+
let ((_a, b), (_c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
406+
let ((btx, brx), (dtx, drx)) = (channel(), channel());
407+
let b = b.map(move |v| { btx.send(v).unwrap(); v });
408+
let d = d.map(move |v| { dtx.send(v).unwrap(); v });
409+
let mut f = b.select(d);
410410
f.schedule(Arc::new(|_: &Tokens| ()));
411411
drop(f);
412-
assert!(crx.recv().is_err());
413-
assert!(arx.recv().is_err());
412+
assert!(drx.recv().is_err());
413+
assert!(brx.recv().is_err());
414414
}
415415

416416
// Cancel propagates
417417
{
418-
let ((a, b), (c, _d)) = (promise::<i32, u32>(), promise::<i32, u32>());
419-
let ((atx, arx), (ctx, crx)) = (channel(), channel());
420-
let a = a.map(move |v| { atx.send(v).unwrap(); v });
421-
let c = c.map(move |v| { ctx.send(v).unwrap(); v });
418+
let ((a, b), (_c, d)) = (promise::<i32, u32>(), promise::<i32, u32>());
419+
let ((btx, brx), (dtx, drx)) = (channel(), channel());
420+
let b = b.map(move |v| { btx.send(v).unwrap(); v });
421+
let d = d.map(move |v| { dtx.send(v).unwrap(); v });
422422
let (tx, rx) = channel();
423-
a.select(c).map(move |_| tx.send(()).unwrap()).forget();
424-
drop(b);
425-
assert!(crx.recv().is_err());
426-
assert!(arx.recv().is_err());
423+
b.select(d).map(move |_| tx.send(()).unwrap()).forget();
424+
drop(a);
425+
assert!(drx.recv().is_err());
426+
assert!(brx.recv().is_err());
427427
assert!(rx.recv().is_err());
428428
}
429429

tests/eager_drop.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl<F: Future, T: Send + 'static> Future for FutureData<F, T> {
5656

5757
#[test]
5858
fn and_then_drops_eagerly() {
59-
let (p, c) = promise::<(), ()>();
59+
let (c, p) = promise::<(), ()>();
6060
let (tx, rx) = channel::<()>();
6161
let (tx2, rx2) = channel();
6262
FutureData { _data: tx, future: p }.and_then(move |_| {

0 commit comments

Comments
 (0)