Просмотр исходного кода

util: impl Encodable and Decodable for Url

ghassmo 4 лет назад
Родитель
Сommit
7ef37c9e9a
1 измененных файлов с 18 добавлено и 0 удалено
  1. 18 0
      src/util/serial.rs

+ 18 - 0
src/util/serial.rs

@@ -9,6 +9,7 @@ use std::{
 };
 
 use num_bigint::BigUint;
+use url::Url;
 
 pub use darkfi_derive::{SerialDecodable, SerialEncodable};
 
@@ -500,6 +501,7 @@ macro_rules! impl_vec {
 }
 
 impl_vec!(SocketAddr);
+impl_vec!(Url);
 impl_vec!([u8; 32]);
 
 impl Encodable for IpAddr {
@@ -538,6 +540,22 @@ impl Decodable for IpAddr {
     }
 }
 
+impl Encodable for Url {
+    fn encode<S: io::Write>(&self, s: S) -> Result<usize> {
+        let mut len = 0;
+        len += self.as_str().to_string().encode(s)?;
+        Ok(len)
+    }
+}
+
+impl Decodable for Url {
+    fn decode<D: io::Read>(mut d: D) -> Result<Self> {
+        let url_str: String = Decodable::decode(&mut d)?;
+        let url = Url::parse(&url_str)?;
+        Ok(url)
+    }
+}
+
 impl Encodable for SocketAddr {
     fn encode<S: io::Write>(&self, mut s: S) -> Result<usize> {
         let mut len = 0;