From 31b7439a69a2ff550e060e2e2c1a5ce7f57d516e Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 7 Jun 2022 15:16:10 +1000 Subject: [PATCH] Mod trait `Fetcher::new` to return `Arc` Signed-off-by: Jiahao XU --- src/fetchers.rs | 7 ++++--- src/fetchers/gh_crate_meta.rs | 5 +++-- src/fetchers/quickinstall.rs | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/fetchers.rs b/src/fetchers.rs index b7b25795..77daaf68 100644 --- a/src/fetchers.rs +++ b/src/fetchers.rs @@ -1,4 +1,5 @@ use std::path::Path; +use std::sync::Arc; pub use gh_crate_meta::*; pub use log::debug; @@ -12,7 +13,7 @@ mod quickinstall; #[async_trait::async_trait] pub trait Fetcher { /// Create a new fetcher from some data - async fn new(data: &Data) -> Box + async fn new(data: &Data) -> Arc where Self: Sized; @@ -44,11 +45,11 @@ pub struct Data { #[derive(Default)] pub struct MultiFetcher { - fetchers: Vec>, + fetchers: Vec>, } impl MultiFetcher { - pub fn add(&mut self, fetcher: Box) { + pub fn add(&mut self, fetcher: Arc) { self.fetchers.push(fetcher); } diff --git a/src/fetchers/gh_crate_meta.rs b/src/fetchers/gh_crate_meta.rs index f048bb87..12bb22ab 100644 --- a/src/fetchers/gh_crate_meta.rs +++ b/src/fetchers/gh_crate_meta.rs @@ -1,4 +1,5 @@ use std::path::Path; +use std::sync::Arc; use log::{debug, info, warn}; use reqwest::Method; @@ -22,8 +23,8 @@ impl GhCrateMeta { #[async_trait::async_trait] impl super::Fetcher for GhCrateMeta { - async fn new(data: &Data) -> Box { - Box::new(Self { data: data.clone() }) + async fn new(data: &Data) -> Arc { + Arc::new(Self { data: data.clone() }) } async fn check(&self) -> Result { diff --git a/src/fetchers/quickinstall.rs b/src/fetchers/quickinstall.rs index 61871e5c..96487851 100644 --- a/src/fetchers/quickinstall.rs +++ b/src/fetchers/quickinstall.rs @@ -1,4 +1,5 @@ use std::path::Path; +use std::sync::Arc; use log::info; use reqwest::Method; @@ -17,11 +18,11 @@ pub struct QuickInstall { #[async_trait::async_trait] impl super::Fetcher for QuickInstall { - async fn new(data: &Data) -> Box { + async fn new(data: &Data) -> Arc { let crate_name = &data.name; let version = &data.version; let target = &data.target; - Box::new(Self { + Arc::new(Self { package: format!("{crate_name}-{version}-{target}"), }) }