From 83d6c3a830de55d8b870807821ff27233dd41255 Mon Sep 17 00:00:00 2001 From: lucky Date: Sat, 23 Nov 2024 23:20:33 +0400 Subject: [PATCH] optimize --- src/collector.rs | 10 +++++----- src/generate.rs | 9 ++++++--- src/main.rs | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/collector.rs b/src/collector.rs index 8d13e12..3612881 100644 --- a/src/collector.rs +++ b/src/collector.rs @@ -1,8 +1,9 @@ #[cfg(feature = "moex")] use crate::source::moex; use crate::{ + config::Config, graph, - source::{self, Config, Rate, RateType, Source}, + source::{self, Rate, RateType, Source}, }; use rust_decimal::Decimal; use std::sync::Arc; @@ -13,7 +14,7 @@ use tokio::sync::mpsc; pub async fn collect( client: &reqwest::Client, - cfg: &Config, + cfg: Arc, tx: mpsc::Sender<(Source, Vec)>, ) { #[cfg(feature = "moex")] @@ -22,8 +23,7 @@ pub async fn collect( .unwrap_or_default() .is_empty() }); - let cfg = Arc::new(cfg.clone()); - for src in Source::iter().filter(|v| cfg.is_enabled_for(*v)) { + for src in Source::iter().filter(|v| cfg.src.is_enabled_for(*v)) { #[cfg(feature = "moex")] if src == Source::MOEX && !MOEX_OK.clone() { continue; @@ -32,7 +32,7 @@ pub async fn collect( let cfg = cfg.clone(); let tx = tx.clone(); tokio::spawn(async move { - let result = source::collect(&client, &cfg, src).await; + let result = source::collect(&client, &cfg.src, src).await; match result { Ok(rates) => { let rates = rates diff --git a/src/generate.rs b/src/generate.rs index 42f5861..e7545bf 100644 --- a/src/generate.rs +++ b/src/generate.rs @@ -198,7 +198,10 @@ pub fn src_table( mod tests { use super::*; use crate::{collector, config::Config}; - use std::{sync::LazyLock, time::Duration}; + use std::{ + sync::{Arc, LazyLock}, + time::Duration, + }; use strum::{EnumCount, IntoEnumIterator}; use tokio::sync::mpsc; @@ -227,11 +230,11 @@ mod tests { let mut result = HashMap::new(); let (tx, mut rx) = mpsc::channel(Source::COUNT); let client = client.clone(); - let cfg = CFG.clone(); + let cfg = Arc::new(CFG.clone()); { let tx = tx.clone(); tokio::spawn(async move { - collector::collect(&client, &cfg.src, tx).await; + collector::collect(&client, cfg, tx).await; }); } drop(tx); diff --git a/src/main.rs b/src/main.rs index 1149aff..d0cf723 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,7 +34,7 @@ async fn collect_loop(db: Arc, cfg: Arc) -> anyhow::Result<()> { let tx = tx.clone(); tokio::spawn(async move { - collector::collect(&client, &cfg.src, tx).await; + collector::collect(&client, cfg, tx).await; }); } drop(tx);