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

darkfid: don't clone drk_tokenlist and sol_tokenlist to save allocations

ghassmo 4 лет назад
Родитель
Сommit
e418fa20ac
1 измененных файлов с 14 добавлено и 12 удалено
  1. 14 12
      src/bin/darkfid.rs

+ 14 - 12
src/bin/darkfid.rs

@@ -160,7 +160,7 @@ impl Darkfid {
             match network {
             match network {
                 #[cfg(feature = "sol")]
                 #[cfg(feature = "sol")]
                 NetworkName::Solana => {
                 NetworkName::Solana => {
-                    let token_id = self.sol_tokenlist.clone().search_id(symbol)?;
+                    let token_id = self.sol_tokenlist.search_id(symbol)?;
                     Ok(json!(token_id))
                     Ok(json!(token_id))
                 }
                 }
                 #[cfg(feature = "btc")]
                 #[cfg(feature = "btc")]
@@ -228,7 +228,7 @@ impl Darkfid {
 
 
         let network = network.as_str().unwrap();
         let network = network.as_str().unwrap();
 
 
-        let token_id = match assign_id(&network, &token, &self.sol_tokenlist.clone()) {
+        let token_id = match assign_id(&network, &token, &self.sol_tokenlist) {
             Ok(t) => t,
             Ok(t) => t,
             Err(e) => {
             Err(e) => {
                 return JsonResult::Err(jsonerr(InternalError, Some(e.to_string()), id));
                 return JsonResult::Err(jsonerr(InternalError, Some(e.to_string()), id));
@@ -303,7 +303,7 @@ impl Darkfid {
 
 
         let amount = amount.as_f64().unwrap();
         let amount = amount.as_f64().unwrap();
 
 
-        let decimals = match decimals(network, token, &self.sol_tokenlist.clone()) {
+        let decimals = match decimals(network, token, &self.sol_tokenlist) {
             Ok(d) => d,
             Ok(d) => d,
             Err(e) => {
             Err(e) => {
                 return JsonResult::Err(jsonerr(InternalError, Some(e.to_string()), id));
                 return JsonResult::Err(jsonerr(InternalError, Some(e.to_string()), id));
@@ -317,7 +317,7 @@ impl Darkfid {
             }
             }
         };
         };
 
 
-        let token_id = match assign_id(&network, &token, &self.sol_tokenlist.clone()) {
+        let token_id = match assign_id(&network, &token, &self.sol_tokenlist) {
             Ok(t) => t,
             Ok(t) => t,
             Err(e) => {
             Err(e) => {
                 return JsonResult::Err(jsonerr(InternalError, Some(e.to_string()), id));
                 return JsonResult::Err(jsonerr(InternalError, Some(e.to_string()), id));
@@ -336,13 +336,14 @@ impl Darkfid {
             }
             }
         }
         }
 
 
-        let hashmap = self.drk_tokenlist.tokens.clone();
+        let token_id: &jubjub::Fr;
 
 
-        if hashmap.get(token).is_none() {
+        // get the id for the token
+        if let Some(tk_id) = self.drk_tokenlist.tokens.get(token) {
+            token_id = tk_id;
+        } else {
             return JsonResult::Err(jsonerr(InvalidParams, None, id));
             return JsonResult::Err(jsonerr(InvalidParams, None, id));
         }
         }
-        // get the id for the token
-        let token_id = hashmap.get(token).unwrap();
 
 
         // send drk to cashier_public
         // send drk to cashier_public
         if let JsonResult::Resp(cashier_public) = &rep {
         if let JsonResult::Resp(cashier_public) = &rep {
@@ -422,13 +423,14 @@ impl Darkfid {
         }
         }
         let amount = amount.as_str().unwrap();
         let amount = amount.as_str().unwrap();
 
 
-        let hashmap = self.drk_tokenlist.tokens.clone();
+        let token_id: &jubjub::Fr;
 
 
-        if hashmap.get(token).is_none() {
+        // get the id for the token
+        if let Some(tk_id) = self.drk_tokenlist.tokens.get(token) {
+            token_id = tk_id;
+        } else {
             return JsonResult::Err(jsonerr(InvalidParams, None, id));
             return JsonResult::Err(jsonerr(InvalidParams, None, id));
         }
         }
-        // get the id for the token
-        let token_id = hashmap.get(token).unwrap();
 
 
         let result: Result<()> = async {
         let result: Result<()> = async {
             // check if it's in the database
             // check if it's in the database