diff --git a/src/io/buffered.rs b/src/io/buffered.rs index 001501dcaa..e0a5ab28da 100644 --- a/src/io/buffered.rs +++ b/src/io/buffered.rs @@ -10,6 +10,9 @@ //! Buffering wrappers for I/O traits +// TODO: set this for entire crate when possible +#![deny(unsafe_op_in_unsafe_fn)] + use core::{cmp, fmt}; use crate::io::{ @@ -172,7 +175,7 @@ impl Read for BufReader { // we can't skip unconditionally because of the large buffer case in read. unsafe fn initializer(&self) -> Initializer { - self.inner.initializer() + unsafe { self.inner.initializer() } } } diff --git a/src/io/cursor.rs b/src/io/cursor.rs index b2179bc14f..ff229bd0ce 100644 --- a/src/io/cursor.rs +++ b/src/io/cursor.rs @@ -8,6 +8,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// TODO: set this for entire crate when possible +#![deny(unsafe_op_in_unsafe_fn)] + use core::cmp; use crate::io::{self, Error, ErrorKind, Initializer, SeekFrom, prelude::*}; @@ -253,7 +256,7 @@ where #[inline] unsafe fn initializer(&self) -> Initializer { - Initializer::nop() + unsafe { Initializer::nop() } } } diff --git a/src/io/impls.rs b/src/io/impls.rs index 80932844be..2168bc80ce 100644 --- a/src/io/impls.rs +++ b/src/io/impls.rs @@ -8,6 +8,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// TODO: set this for entire crate when possible +#![deny(unsafe_op_in_unsafe_fn)] + use alloc::string::String; use core::{cmp, fmt, mem}; @@ -21,7 +24,7 @@ impl<'a, R: Read + ?Sized> Read for &'a mut R { #[inline] unsafe fn initializer(&self) -> Initializer { - (**self).initializer() + unsafe { (**self).initializer() } } #[cfg(feature = "alloc")] @@ -100,7 +103,7 @@ impl Read for Box { #[inline] unsafe fn initializer(&self) -> Initializer { - (**self).initializer() + unsafe { (**self).initializer() } } #[cfg(feature = "alloc")] @@ -200,7 +203,7 @@ impl<'a> Read for &'a [u8] { #[inline] unsafe fn initializer(&self) -> Initializer { - Initializer::nop() + unsafe { Initializer::nop() } } #[inline] diff --git a/src/io/mod.rs b/src/io/mod.rs index 96c5813a17..ae4f50ab3a 100644 --- a/src/io/mod.rs +++ b/src/io/mod.rs @@ -267,6 +267,9 @@ //! [`Result`]: ../result/enum.Result.html //! [`.unwrap()`]: ../result/enum.Result.html#method.unwrap +// TODO: set this for entire crate when possible +#![deny(unsafe_op_in_unsafe_fn)] + pub mod buffered; pub mod cursor; pub mod error; @@ -1393,11 +1396,11 @@ impl Read for Chain { } unsafe fn initializer(&self) -> Initializer { - let initializer = self.first.initializer(); + let initializer = unsafe { self.first.initializer() }; if initializer.should_initialize() { initializer } else { - self.second.initializer() + unsafe { self.second.initializer() } } } } @@ -1586,7 +1589,7 @@ impl Read for Take { } unsafe fn initializer(&self) -> Initializer { - self.inner.initializer() + unsafe { self.inner.initializer() } } fn read_to_end(&mut self, buf: &mut Vec) -> Result {