From 57ac163a06b7f4b00d9cfd56d0ab6ee6a49adb56 Mon Sep 17 00:00:00 2001
From: hozan23 <hozan23@proton.me>
Date: Wed, 29 Nov 2023 00:32:19 +0300
Subject: net: use `bincode` derive feature to implement Encode and Deconde for
 Addr

---
 net/Cargo.toml      |  2 +-
 net/src/endpoint.rs | 39 ++-------------------------------------
 2 files changed, 3 insertions(+), 38 deletions(-)

(limited to 'net')

diff --git a/net/Cargo.toml b/net/Cargo.toml
index 863a250..d2cb884 100644
--- a/net/Cargo.toml
+++ b/net/Cargo.toml
@@ -11,7 +11,7 @@ karyons_core.workspace = true
 smol = "1.3.0"
 async-trait = "0.1.73"
 log = "0.4.20"
-bincode = "2.0.0-rc.3"
+bincode = { version="2.0.0-rc.3", features = ["derive"]}
 thiserror = "1.0.47"
 url = "2.4.1"
 async-rustls = { version = "0.4.1", features = ["dangerous_configuration"] }
diff --git a/net/src/endpoint.rs b/net/src/endpoint.rs
index 720eea3..1a1f975 100644
--- a/net/src/endpoint.rs
+++ b/net/src/endpoint.rs
@@ -5,7 +5,7 @@ use std::{
     str::FromStr,
 };
 
-use bincode::{impl_borrow_decode, Decode, Encode};
+use bincode::{Decode, Encode};
 use url::Url;
 
 use crate::{Error, Result};
@@ -177,47 +177,12 @@ impl Endpoint {
 }
 
 /// Addr defines a type for an address, either IP or domain.
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+#[derive(Debug, Clone, PartialEq, Eq, Hash, Encode, Decode)]
 pub enum Addr {
     Ip(IpAddr),
     Domain(String),
 }
 
-impl Encode for Addr {
-    fn encode<E: bincode::enc::Encoder>(
-        &self,
-        encoder: &mut E,
-    ) -> std::result::Result<(), bincode::error::EncodeError> {
-        match self {
-            Addr::Ip(addr) => {
-                0u32.encode(encoder)?;
-                addr.encode(encoder)
-            }
-            Addr::Domain(domain) => {
-                1u32.encode(encoder)?;
-                domain.encode(encoder)
-            }
-        }
-    }
-}
-
-impl Decode for Addr {
-    fn decode<D: bincode::de::Decoder>(
-        decoder: &mut D,
-    ) -> std::result::Result<Self, bincode::error::DecodeError> {
-        match u32::decode(decoder)? {
-            0 => Ok(Addr::Ip(IpAddr::decode(decoder)?)),
-            1 => Ok(Addr::Domain(String::decode(decoder)?)),
-            found => Err(bincode::error::DecodeError::UnexpectedVariant {
-                allowed: &bincode::error::AllowedEnumVariants::Range { min: 0, max: 1 },
-                found,
-                type_name: core::any::type_name::<Addr>(),
-            }),
-        }
-    }
-}
-impl_borrow_decode!(Addr);
-
 impl TryFrom<Addr> for IpAddr {
     type Error = Error;
     fn try_from(addr: Addr) -> std::result::Result<IpAddr, Self::Error> {
-- 
cgit v1.2.3