From 90918111474cb573a4183bb9b8eb04dfd8150275 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 23 Mar 2020 23:53:54 +0100 Subject: [PATCH] use Wake trait for async-fn driver --- tests/run-pass/async-fn.rs | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/tests/run-pass/async-fn.rs b/tests/run-pass/async-fn.rs index 90448aca1779..b0a979123343 100644 --- a/tests/run-pass/async-fn.rs +++ b/tests/run-pass/async-fn.rs @@ -1,7 +1,9 @@ #![feature(never_type)] +#![feature(wake_trait)] -use std::{future::Future, pin::Pin, task::Poll, ptr}; -use std::task::{Waker, RawWaker, RawWakerVTable, Context}; +use std::{future::Future, pin::Pin, task::Poll}; +use std::task::{Wake, Waker, Context}; +use std::sync::Arc; // See if we can run a basic `async fn` pub async fn foo(x: &u32, y: u32) -> u32 { @@ -47,25 +49,14 @@ async fn partial_init(x: u32) -> u32 { } fn run_fut(mut fut: impl Future, output: u32) { - fn raw_waker_clone(_this: *const ()) -> RawWaker { - panic!("unimplemented"); + struct MyWaker; + impl Wake for MyWaker { + fn wake(self: Arc) { + unimplemented!() + } } - fn raw_waker_wake(_this: *const ()) { - panic!("unimplemented"); - } - fn raw_waker_wake_by_ref(_this: *const ()) { - panic!("unimplemented"); - } - fn raw_waker_drop(_this: *const ()) {} - static RAW_WAKER: RawWakerVTable = RawWakerVTable::new( - raw_waker_clone, - raw_waker_wake, - raw_waker_wake_by_ref, - raw_waker_drop, - ); - - let waker = unsafe { Waker::from_raw(RawWaker::new(ptr::null(), &RAW_WAKER)) }; + let waker = Waker::from(Arc::new(MyWaker)); let mut context = Context::from_waker(&waker); assert_eq!(unsafe { Pin::new_unchecked(&mut fut) }.poll(&mut context), Poll::Ready(output)); }