Skip to content

Commit 10a25e3

Browse files
style: reduce amount of unsafe code
1 parent d7c602a commit 10a25e3

File tree

2 files changed

+4
-19
lines changed

2 files changed

+4
-19
lines changed

src/raw_pinger/blocking.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
use std::{
2-
borrow::Cow,
3-
io,
4-
marker::PhantomData,
5-
mem::{self, MaybeUninit},
6-
net::{IpAddr, SocketAddr},
7-
time::Duration,
2+
borrow::Cow, io, marker::PhantomData, mem::MaybeUninit, net::SocketAddr, time::Duration,
83
};
94

105
use crate::{
@@ -42,12 +37,7 @@ impl<V: IpVersion> RawBlockingPinger<V> {
4237
Err(err) if err.kind() == io::ErrorKind::WouldBlock => return Ok(None),
4338
Err(err) => return Err(err),
4439
};
45-
let source = match (source.ip(), V::IS_V4) {
46-
(IpAddr::V4(v4), true) => unsafe { mem::transmute_copy(&v4) },
47-
(IpAddr::V6(v6), false) => unsafe { mem::transmute_copy(&v6) },
48-
_ => unreachable!(),
49-
};
50-
40+
let source = V::from_ip_addr(source.ip()).unwrap();
5141
let packet = EchoReplyPacket::from_reply(source, Cow::Borrowed(received));
5242
Ok(packet)
5343
}

src/raw_pinger/mod.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::{
66
io,
77
marker::PhantomData,
88
mem::{self, MaybeUninit},
9-
net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr},
9+
net::{Ipv4Addr, Ipv6Addr, SocketAddr},
1010
pin::Pin,
1111
task::{ready, Context, Poll},
1212
};
@@ -78,12 +78,7 @@ impl<V: IpVersion> RawPinger<V> {
7878
buf: &mut [MaybeUninit<u8>],
7979
) -> Poll<io::Result<EchoReplyPacket<'_, V>>> {
8080
let (buf, source) = ready!(self.socket.poll_read(cx, buf))?;
81-
let source = match (source.ip(), V::IS_V4) {
82-
(IpAddr::V4(v4), true) => unsafe { mem::transmute_copy(&v4) },
83-
(IpAddr::V6(v6), false) => unsafe { mem::transmute_copy(&v6) },
84-
_ => unreachable!(),
85-
};
86-
81+
let source = V::from_ip_addr(source.ip()).unwrap();
8782
match EchoReplyPacket::from_reply(source, Cow::Borrowed(buf)) {
8883
Some(packet) => Poll::Ready(Ok(packet)),
8984
None => {

0 commit comments

Comments
 (0)