diff options
author | Taiki Endo <te316e89@gmail.com> | 2020-06-12 19:49:39 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-12 19:49:39 +0900 |
commit | 6b6e76080afc92450238df69c4edc12ee5f7518d (patch) | |
tree | 9ce5f612595a3829778df524c24f51a91f155a0e /tokio/src/runtime/blocking/task.rs | |
parent | 68b4ca9f553bd4c26ea78e1f564e452071cf6474 (diff) |
chore: reduce pin related unsafe code (#2613)
Diffstat (limited to 'tokio/src/runtime/blocking/task.rs')
-rw-r--r-- | tokio/src/runtime/blocking/task.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/tokio/src/runtime/blocking/task.rs b/tokio/src/runtime/blocking/task.rs index e0ae6e4e..a521af46 100644 --- a/tokio/src/runtime/blocking/task.rs +++ b/tokio/src/runtime/blocking/task.rs @@ -14,14 +14,17 @@ impl<T> BlockingTask<T> { } } +// The closure `F` is never pinned +impl<T> Unpin for BlockingTask<T> {} + impl<T, R> Future for BlockingTask<T> where T: FnOnce() -> R, { type Output = R; - fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<R> { - let me = unsafe { self.get_unchecked_mut() }; + fn poll(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<R> { + let me = &mut *self; let func = me .func .take() |