use crate::LightClone;
use std::any::TypeId;
use std::marker::PhantomPinned;
use std::net::{Ipv4Addr, Ipv6Addr, SocketAddrV4, SocketAddrV6};
use std::num::{
NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroIsize, NonZeroU128,
NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize,
};
use std::thread::ThreadId;
use std::time::{Duration, Instant, SystemTime};
macro_rules! impl_light_clone {
($($t:ty),* $(,)?) => {
$(
impl LightClone for $t {}
)*
};
}
impl_light_clone!(
i8,
i16,
i32,
i64,
i128,
isize,
u8,
u16,
u32,
u64,
u128,
usize,
f32,
f64,
bool,
char,
NonZeroI8,
NonZeroI16,
NonZeroI32,
NonZeroI64,
NonZeroI128,
NonZeroIsize,
NonZeroU8,
NonZeroU16,
NonZeroU32,
NonZeroU64,
NonZeroU128,
NonZeroUsize,
Duration,
Instant,
SystemTime,
TypeId,
PhantomPinned,
Ipv4Addr,
Ipv6Addr,
SocketAddrV4,
SocketAddrV6,
ThreadId,
);
impl<T: ?Sized> LightClone for &T {}
impl<T: ?Sized> LightClone for *const T {}
impl<T: ?Sized> LightClone for *mut T {}