test: remove unnecessary unsafe code (#2424)

This commit is contained in:
Taiki Endo 2020-04-22 02:34:55 +09:00 committed by GitHub
parent 43bbbf61a2
commit 7e88b56be5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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)
}
}