Skip to content

Commit

Permalink
Move Send and Sync impl for MaybeUninitSlice to sys
Browse files Browse the repository at this point in the history
Fixes a Clippy warning and also makes it clear how the unsafe
implementation is actually safe.
  • Loading branch information
Thomasdezeeuw committed Dec 17, 2021
1 parent cf3f6f6 commit dc6e996
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 5 deletions.
4 changes: 0 additions & 4 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -285,10 +285,6 @@ impl RecvFlags {
#[repr(transparent)]
pub struct MaybeUninitSlice<'a>(sys::MaybeUninitSlice<'a>);

unsafe impl<'a> Send for MaybeUninitSlice<'a> {}

unsafe impl<'a> Sync for MaybeUninitSlice<'a> {}

impl<'a> fmt::Debug for MaybeUninitSlice<'a> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Debug::fmt(self.0.as_slice(), fmt)
Expand Down
2 changes: 1 addition & 1 deletion src/sockaddr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ impl From<SocketAddrV4> for SockAddr {
let sockaddr_in = sockaddr_in {
sin_family: AF_INET as sa_family_t,
sin_port: addr.port().to_be(),
sin_addr: crate::sys::to_in_addr(&addr.ip()),
sin_addr: crate::sys::to_in_addr(addr.ip()),
sin_zero: Default::default(),
#[cfg(any(
target_os = "dragonfly",
Expand Down
4 changes: 4 additions & 0 deletions src/sys/unix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,10 @@ pub struct MaybeUninitSlice<'a> {
_lifetime: PhantomData<&'a mut [MaybeUninit<u8>]>,
}

unsafe impl<'a> Send for MaybeUninitSlice<'a> {}

unsafe impl<'a> Sync for MaybeUninitSlice<'a> {}

impl<'a> MaybeUninitSlice<'a> {
pub(crate) fn new(buf: &'a mut [MaybeUninit<u8>]) -> MaybeUninitSlice<'a> {
MaybeUninitSlice {
Expand Down
4 changes: 4 additions & 0 deletions src/sys/windows.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,10 @@ pub struct MaybeUninitSlice<'a> {
_lifetime: PhantomData<&'a mut [MaybeUninit<u8>]>,
}

unsafe impl<'a> Send for MaybeUninitSlice<'a> {}

unsafe impl<'a> Sync for MaybeUninitSlice<'a> {}

impl<'a> MaybeUninitSlice<'a> {
pub fn new(buf: &'a mut [MaybeUninit<u8>]) -> MaybeUninitSlice<'a> {
assert!(buf.len() <= ULONG::MAX as usize);
Expand Down

0 comments on commit dc6e996

Please sign in to comment.