summaryrefslogtreecommitdiffstats
path: root/tests/ui/dyn-star/dispatch-on-pin-mut.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/dyn-star/dispatch-on-pin-mut.rs')
-rw-r--r--tests/ui/dyn-star/dispatch-on-pin-mut.rs24
1 files changed, 5 insertions, 19 deletions
diff --git a/tests/ui/dyn-star/dispatch-on-pin-mut.rs b/tests/ui/dyn-star/dispatch-on-pin-mut.rs
index 5774c8b2a..c4ae279e6 100644
--- a/tests/ui/dyn-star/dispatch-on-pin-mut.rs
+++ b/tests/ui/dyn-star/dispatch-on-pin-mut.rs
@@ -4,6 +4,7 @@
#![feature(dyn_star)]
//~^ WARN the feature `dyn_star` is incomplete and may not be safe to use and/or cause compiler crashes
+#![feature(noop_waker)]
use std::future::Future;
@@ -18,33 +19,18 @@ async fn async_main() {
// ------------------------------------------------------------------------- //
// Implementation Details Below...
-use std::pin::Pin;
use std::task::*;
-
-pub fn noop_waker() -> Waker {
- let raw = RawWaker::new(std::ptr::null(), &NOOP_WAKER_VTABLE);
-
- // SAFETY: the contracts for RawWaker and RawWakerVTable are upheld
- unsafe { Waker::from_raw(raw) }
-}
-
-const NOOP_WAKER_VTABLE: RawWakerVTable = RawWakerVTable::new(noop_clone, noop, noop, noop);
-
-unsafe fn noop_clone(_p: *const ()) -> RawWaker {
- RawWaker::new(std::ptr::null(), &NOOP_WAKER_VTABLE)
-}
-
-unsafe fn noop(_p: *const ()) {}
+use std::pin::pin;
fn main() {
- let mut fut = async_main();
+ let mut fut = pin!(async_main());
// Poll loop, just to test the future...
- let waker = noop_waker();
+ let waker = Waker::noop();
let ctx = &mut Context::from_waker(&waker);
loop {
- match unsafe { Pin::new_unchecked(&mut fut).poll(ctx) } {
+ match fut.as_mut().poll(ctx) {
Poll::Pending => {}
Poll::Ready(()) => break,
}