From 7e88b56be5fd70f53af6639c04546cf034a66d9e Mon Sep 17 00:00:00 2001
From: Taiki Endo <te316e89@gmail.com>
Date: Wed, 22 Apr 2020 02:34:55 +0900
Subject: [PATCH] test: remove unnecessary unsafe code (#2424)

---
 tokio-test/src/task.rs | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/tokio-test/src/task.rs b/tokio-test/src/task.rs
index b31850ba..82d29134 100644
--- a/tokio-test/src/task.rs
+++ b/tokio-test/src/task.rs
@@ -119,20 +119,16 @@ impl<T: Stream> Spawn<T> {
 impl<T: Future> Future for Spawn<T> {
     type Output = T::Output;
 
-    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
-        // Safety: we only expose &mut T if T: Unpin therefore this is safe.
-        let future = unsafe { self.map_unchecked_mut(|s| &mut s.future) };
-        future.poll(cx)
+    fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
+        self.future.as_mut().poll(cx)
     }
 }
 
 impl<T: Stream> Stream for Spawn<T> {
     type Item = T::Item;
 
-    fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
-        // Safety: we only expose &mut T if T: Unpin therefore this is safe.
-        let stream = unsafe { self.map_unchecked_mut(|s| &mut s.future) };
-        stream.poll_next(cx)
+    fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
+        self.future.as_mut().poll_next(cx)
     }
 }
 
-- 
GitLab