diff --git a/src/fs/file.rs b/src/fs/file.rs index 7dc12dd0..0299ff19 100644 --- a/src/fs/file.rs +++ b/src/fs/file.rs @@ -696,7 +696,7 @@ impl LockGuard { // file. This call should not block because it doesn't touch the actual file on disk. if pos == SeekFrom::Current(0) { // Poll the internal file cursor. - let internal = (&*self.file).seek(SeekFrom::Current(0))?; + let internal = (&*self.file).stream_position()?; // Factor in the difference caused by caching. let actual = match self.mode { @@ -714,7 +714,7 @@ impl LockGuard { if let Some(new) = (start as i64).checked_add(diff) { if 0 <= new && new <= self.cache.len() as i64 { // Poll the internal file cursor. - let internal = (&*self.file).seek(SeekFrom::Current(0))?; + let internal = (&*self.file).stream_position()?; // Adjust the current position in the read cache. self.mode = Mode::Reading(new as usize); diff --git a/src/future/poll_fn.rs b/src/future/poll_fn.rs index 19452640..ce4fbfea 100644 --- a/src/future/poll_fn.rs +++ b/src/future/poll_fn.rs @@ -44,6 +44,6 @@ where type Output = T; fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - (&mut self.f)(cx) + (self.f)(cx) } } diff --git a/src/io/buf_read/lines.rs b/src/io/buf_read/lines.rs index c60529cd..ff4c61d2 100644 --- a/src/io/buf_read/lines.rs +++ b/src/io/buf_read/lines.rs @@ -50,7 +50,7 @@ impl Stream for Lines { this.buf.pop(); } } - Poll::Ready(Some(Ok(mem::replace(this.buf, String::new())))) + Poll::Ready(Some(Ok(mem::take(this.buf)))) } } @@ -62,7 +62,7 @@ pub fn read_line_internal( read: &mut usize, ) -> Poll> { let ret = futures_core::ready!(read_until_internal(reader, cx, b'\n', bytes, read)); - if str::from_utf8(&bytes).is_err() { + if str::from_utf8(bytes).is_err() { Poll::Ready(ret.and_then(|_| { Err(io::Error::new( io::ErrorKind::InvalidData, diff --git a/src/io/buf_read/mod.rs b/src/io/buf_read/mod.rs index bcb9d907..e9618a6a 100644 --- a/src/io/buf_read/mod.rs +++ b/src/io/buf_read/mod.rs @@ -136,7 +136,7 @@ pub trait BufReadExt: BufRead { { ReadLineFuture { reader: self, - bytes: unsafe { mem::replace(buf.as_mut_vec(), Vec::new()) }, + bytes: unsafe { std::mem::take(buf.as_mut_vec()) }, buf, read: 0, } diff --git a/src/io/buf_read/read_line.rs b/src/io/buf_read/read_line.rs index b66079bc..a8ead433 100644 --- a/src/io/buf_read/read_line.rs +++ b/src/io/buf_read/read_line.rs @@ -29,7 +29,7 @@ impl Future for ReadLineFuture<'_, T> { let reader = Pin::new(reader); let ret = futures_core::ready!(read_until_internal(reader, cx, b'\n', bytes, read)); - if str::from_utf8(&bytes).is_err() { + if str::from_utf8(bytes).is_err() { Poll::Ready(ret.and_then(|_| { Err(io::Error::new( io::ErrorKind::InvalidData, diff --git a/src/io/buf_read/split.rs b/src/io/buf_read/split.rs index 229a99b3..5f57a966 100644 --- a/src/io/buf_read/split.rs +++ b/src/io/buf_read/split.rs @@ -46,6 +46,6 @@ impl Stream for Split { if this.buf[this.buf.len() - 1] == *this.delim { this.buf.pop(); } - Poll::Ready(Some(Ok(mem::replace(this.buf, vec![])))) + Poll::Ready(Some(Ok(mem::take(this.buf)))) } } diff --git a/src/io/read/chain.rs b/src/io/read/chain.rs index b5eac581..26488ef4 100644 --- a/src/io/read/chain.rs +++ b/src/io/read/chain.rs @@ -144,7 +144,7 @@ impl BufRead for Chain { let this = self.project(); if !*this.done_first { match futures_core::ready!(this.first.poll_fill_buf(cx)) { - Ok(buf) if buf.is_empty() => { + Ok([]) => { *this.done_first = true; } Ok(buf) => return Poll::Ready(Ok(buf)), diff --git a/src/io/read/mod.rs b/src/io/read/mod.rs index 40542258..f43b2870 100644 --- a/src/io/read/mod.rs +++ b/src/io/read/mod.rs @@ -168,7 +168,7 @@ pub trait ReadExt: Read { let start_len = buf.len(); ReadToStringFuture { reader: self, - bytes: unsafe { mem::replace(buf.as_mut_vec(), Vec::new()) }, + bytes: unsafe { mem::take(buf.as_mut_vec()) }, buf, start_len, } diff --git a/src/io/read/read_exact.rs b/src/io/read/read_exact.rs index 71cf004d..87cfcbe5 100644 --- a/src/io/read/read_exact.rs +++ b/src/io/read/read_exact.rs @@ -20,7 +20,7 @@ impl Future for ReadExactFuture<'_, T> { while !buf.is_empty() { let n = futures_core::ready!(Pin::new(&mut *reader).poll_read(cx, buf))?; - let (_, rest) = mem::replace(buf, &mut []).split_at_mut(n); + let (_, rest) = mem::take(buf).split_at_mut(n); *buf = rest; if n == 0 { diff --git a/src/io/read/read_to_string.rs b/src/io/read/read_to_string.rs index 5b74389e..77ebd10b 100644 --- a/src/io/read/read_to_string.rs +++ b/src/io/read/read_to_string.rs @@ -29,7 +29,7 @@ impl Future for ReadToStringFuture<'_, T> { let reader = Pin::new(reader); let ret = futures_core::ready!(read_to_end_internal(reader, cx, bytes, *start_len)); - if str::from_utf8(&bytes).is_err() { + if str::from_utf8(bytes).is_err() { Poll::Ready(ret.and_then(|_| { Err(io::Error::new( io::ErrorKind::InvalidData, diff --git a/src/io/write/write_all.rs b/src/io/write/write_all.rs index f04c55d6..eea9269b 100644 --- a/src/io/write/write_all.rs +++ b/src/io/write/write_all.rs @@ -20,7 +20,7 @@ impl Future for WriteAllFuture<'_, T> { while !buf.is_empty() { let n = futures_core::ready!(Pin::new(&mut **writer).poll_write(cx, buf))?; - let (_, rest) = mem::replace(buf, &[]).split_at(n); + let (_, rest) = mem::take(buf).split_at(n); *buf = rest; if n == 0 { diff --git a/src/net/addr.rs b/src/net/addr.rs index 71988fb3..793492d8 100644 --- a/src/net/addr.rs +++ b/src/net/addr.rs @@ -280,6 +280,6 @@ impl ToSocketAddrs for String { impl Future, ToSocketAddrsFuture ) { - (&**self).to_socket_addrs() + (**self).to_socket_addrs() } } diff --git a/src/path/path.rs b/src/path/path.rs index 185bfaff..331edfa0 100644 --- a/src/path/path.rs +++ b/src/path/path.rs @@ -261,7 +261,7 @@ impl Path { /// assert_eq!(ancestors.next(), None); /// ``` pub fn ancestors(&self) -> Ancestors<'_> { - Ancestors { next: Some(&self) } + Ancestors { next: Some(self) } } /// Returns the final component of the `Path`, if there is one. @@ -1011,7 +1011,7 @@ impl_cmp_os_str!(&'a Path, OsString); impl<'a> From<&'a std::path::Path> for &'a Path { fn from(path: &'a std::path::Path) -> &'a Path { - &Path::new(path.as_os_str()) + Path::new(path.as_os_str()) } } diff --git a/src/stream/from_fn.rs b/src/stream/from_fn.rs index d3736454..3d2e20fb 100644 --- a/src/stream/from_fn.rs +++ b/src/stream/from_fn.rs @@ -62,7 +62,7 @@ where type Item = T; fn poll_next(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { - let item = (&mut self.f)(); + let item = (self.f)(); Poll::Ready(item) } } diff --git a/src/stream/repeat_with.rs b/src/stream/repeat_with.rs index 39984a3a..26154fd0 100644 --- a/src/stream/repeat_with.rs +++ b/src/stream/repeat_with.rs @@ -78,7 +78,7 @@ where type Item = T; fn poll_next(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { - let item = (&mut self.f)(); + let item = (self.f)(); Poll::Ready(Some(item)) } } diff --git a/src/stream/stream/all.rs b/src/stream/stream/all.rs index 06f4d7f8..8f162b86 100644 --- a/src/stream/stream/all.rs +++ b/src/stream/stream/all.rs @@ -37,7 +37,7 @@ where match next { Some(v) => { - let result = (&mut self.f)(v); + let result = (self.f)(v); if result { // don't forget to wake this task again to pull the next item from stream diff --git a/src/stream/stream/any.rs b/src/stream/stream/any.rs index 15154c50..e272c032 100644 --- a/src/stream/stream/any.rs +++ b/src/stream/stream/any.rs @@ -37,7 +37,7 @@ where match next { Some(v) => { - let result = (&mut self.f)(v); + let result = (self.f)(v); if result { Poll::Ready(true) diff --git a/src/stream/stream/find.rs b/src/stream/stream/find.rs index 8652ac09..24549e29 100644 --- a/src/stream/stream/find.rs +++ b/src/stream/stream/find.rs @@ -30,7 +30,7 @@ where let item = futures_core::ready!(Pin::new(&mut *self.stream).poll_next(cx)); match item { - Some(v) if (&mut self.p)(&v) => Poll::Ready(Some(v)), + Some(v) if (self.p)(&v) => Poll::Ready(Some(v)), Some(_) => { cx.waker().wake_by_ref(); Poll::Pending diff --git a/src/stream/stream/find_map.rs b/src/stream/stream/find_map.rs index f7e3c1e0..82beece7 100644 --- a/src/stream/stream/find_map.rs +++ b/src/stream/stream/find_map.rs @@ -30,7 +30,7 @@ where let item = futures_core::ready!(Pin::new(&mut *self.stream).poll_next(cx)); match item { - Some(v) => match (&mut self.f)(v) { + Some(v) => match (self.f)(v) { Some(v) => Poll::Ready(Some(v)), None => { cx.waker().wake_by_ref(); diff --git a/src/stream/stream/position.rs b/src/stream/stream/position.rs index 2811b6d8..b730869b 100644 --- a/src/stream/stream/position.rs +++ b/src/stream/stream/position.rs @@ -36,7 +36,7 @@ where match next { Some(v) => { - if (&mut self.predicate)(v) { + if (self.predicate)(v) { Poll::Ready(Some(self.index)) } else { cx.waker().wake_by_ref(); diff --git a/src/stream/stream/try_fold.rs b/src/stream/stream/try_fold.rs index 73312ff7..cbde6efa 100644 --- a/src/stream/stream/try_fold.rs +++ b/src/stream/stream/try_fold.rs @@ -38,7 +38,7 @@ where match next { Some(v) => { let old = self.acc.take().unwrap(); - let new = (&mut self.f)(old, v); + let new = (self.f)(old, v); match new { Ok(o) => self.acc = Some(o), diff --git a/src/stream/stream/try_for_each.rs b/src/stream/stream/try_for_each.rs index 917bfd16..c966152b 100644 --- a/src/stream/stream/try_for_each.rs +++ b/src/stream/stream/try_for_each.rs @@ -33,7 +33,7 @@ where match item { None => return Poll::Ready(Ok(())), Some(v) => { - let res = (&mut self.f)(v); + let res = (self.f)(v); if let Err(e) = res { return Poll::Ready(Err(e)); } diff --git a/src/task/builder.rs b/src/task/builder.rs index aba0d611..534e8d68 100644 --- a/src/task/builder.rs +++ b/src/task/builder.rs @@ -154,7 +154,7 @@ impl Builder { thread_local! { /// Tracks the number of nested block_on calls. - static NUM_NESTED_BLOCKING: Cell = Cell::new(0); + static NUM_NESTED_BLOCKING: Cell = const { Cell::new(0) }; } // Run the future as a task. diff --git a/src/task/task_id.rs b/src/task/task_id.rs index 92c607c7..70fb5483 100644 --- a/src/task/task_id.rs +++ b/src/task/task_id.rs @@ -22,7 +22,7 @@ impl TaskId { static COUNTER: AtomicUsize = AtomicUsize::new(1); let id = COUNTER.fetch_add(1, Ordering::Relaxed); - if id > usize::max_value() / 2 { + if id > usize::MAX / 2 { std::process::abort(); } TaskId(id) diff --git a/src/task/task_local.rs b/src/task/task_local.rs index 1661c0bb..93556e73 100644 --- a/src/task/task_local.rs +++ b/src/task/task_local.rs @@ -120,7 +120,7 @@ impl LocalKey { static COUNTER: AtomicU32 = AtomicU32::new(1); let counter = COUNTER.fetch_add(1, Ordering::Relaxed); - if counter > u32::max_value() / 2 { + if counter > u32::MAX / 2 { std::process::abort(); } diff --git a/src/task/task_locals_wrapper.rs b/src/task/task_locals_wrapper.rs index 2a7ddb7a..97559937 100644 --- a/src/task/task_locals_wrapper.rs +++ b/src/task/task_locals_wrapper.rs @@ -6,7 +6,7 @@ use crate::utils::abort_on_panic; thread_local! { /// A pointer to the currently running task. - static CURRENT: Cell<*const TaskLocalsWrapper> = Cell::new(ptr::null_mut()); + static CURRENT: Cell<*const TaskLocalsWrapper> = const { Cell::new(ptr::null_mut()) }; } /// A wrapper to store task local data. diff --git a/src/utils.rs b/src/utils.rs index d1cb063b..cfd7362c 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -71,7 +71,7 @@ pub(crate) fn timer_after(dur: std::time::Duration) -> timer::Timer { Timer::after(dur) } -#[cfg(any(all(target_arch = "wasm32", feature = "default"),))] +#[cfg(all(target_arch = "wasm32", feature = "default"))] mod timer { use std::pin::Pin; use std::task::Poll; diff --git a/tests/tcp.rs b/tests/tcp.rs index f21737e8..2fab1679 100644 --- a/tests/tcp.rs +++ b/tests/tcp.rs @@ -60,7 +60,7 @@ fn smoke_std_stream_to_async_listener() -> io::Result<()> { let listener = TcpListener::bind("127.0.0.1:0").await?; let addr = listener.local_addr()?; - let mut std_stream = std::net::TcpStream::connect(&addr)?; + let mut std_stream = std::net::TcpStream::connect(addr)?; std_stream.write_all(THE_WINTERS_TALE)?; let mut buf = vec![0; 1024]; diff --git a/tests/uds.rs b/tests/uds.rs index dcdce443..d81786bb 100644 --- a/tests/uds.rs +++ b/tests/uds.rs @@ -96,7 +96,7 @@ async fn ping_pong_server(listener: UnixListener, iterations: u32) -> std::io::R let mut s = s?; let n = s.read(&mut buf[..]).await?; assert_eq!(&buf[..n], PING); - s.write_all(&PONG).await?; + s.write_all(PONG).await?; } } Ok(()) @@ -106,7 +106,7 @@ async fn ping_pong_client(socket: &std::path::PathBuf, iterations: u32) -> std:: let mut buf = [0; 1024]; for _ix in 0..iterations { let mut socket = UnixStream::connect(&socket).await?; - socket.write_all(&PING).await?; + socket.write_all(PING).await?; let n = async_std::io::timeout(TEST_TIMEOUT, socket.read(&mut buf[..])).await?; assert_eq!(&buf[..n], PONG); }