From 7315f57a4b0f648210ed4cdd5112e315cbfadbe7 Mon Sep 17 00:00:00 2001 From: yggverse Date: Fri, 17 Jan 2025 07:33:10 +0200 Subject: [PATCH] use `FnOnce` for callback function --- src/app/browser/window/tab/item/page/client.rs | 4 ++-- .../window/tab/item/page/client/driver.rs | 18 +++--------------- .../tab/item/page/client/driver/gemini.rs | 4 ++-- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/app/browser/window/tab/item/page/client.rs b/src/app/browser/window/tab/item/page/client.rs index 7d50ad13..79c3cb9b 100644 --- a/src/app/browser/window/tab/item/page/client.rs +++ b/src/app/browser/window/tab/item/page/client.rs @@ -42,7 +42,7 @@ impl Client { /// Begin new request /// * the `query` as string, to support system routes (e.g. `source:` prefix) - pub fn request_async(&self, request: &str, callback: impl Fn(Response) + 'static) { + pub fn request_async(&self, request: &str, callback: impl FnOnce(Response) + 'static) { // Update client status self.status.replace(Status::Request { time: now(), @@ -52,7 +52,7 @@ impl Client { self.driver.feature_async( Feature::from_string(request), self.new_cancellable(), - Rc::new(callback), + callback, ); } diff --git a/src/app/browser/window/tab/item/page/client/driver.rs b/src/app/browser/window/tab/item/page/client/driver.rs index 2c468724..9e0fa497 100644 --- a/src/app/browser/window/tab/item/page/client/driver.rs +++ b/src/app/browser/window/tab/item/page/client/driver.rs @@ -65,7 +65,7 @@ impl Driver { &self, feature: Feature, cancellable: Cancellable, - callback: Rc, + callback: impl FnOnce(Response) + 'static, ) { match feature { Feature::Download { request } => match request { @@ -98,13 +98,7 @@ impl Driver { uri.clone(), cancellable.clone(), move |result| { - gemini::handle( - result, - uri.clone(), - cancellable.clone(), - false, - callback.clone(), - ) + gemini::handle(result, uri.clone(), cancellable.clone(), false, callback) }, ), Request::Titan { .. } => todo!(), @@ -117,13 +111,7 @@ impl Driver { uri.clone(), cancellable.clone(), move |result| { - gemini::handle( - result, - uri.clone(), - cancellable.clone(), - true, - callback.clone(), - ) + gemini::handle(result, uri.clone(), cancellable.clone(), true, callback) }, ), _ => callback(Response::Failure(Failure::Error { diff --git a/src/app/browser/window/tab/item/page/client/driver/gemini.rs b/src/app/browser/window/tab/item/page/client/driver/gemini.rs index e3a356fd..d64e62b4 100644 --- a/src/app/browser/window/tab/item/page/client/driver/gemini.rs +++ b/src/app/browser/window/tab/item/page/client/driver/gemini.rs @@ -14,7 +14,7 @@ pub fn request_async( client: &Rc, uri: Uri, cancellable: Cancellable, - callback: impl Fn(Result) + 'static, + callback: impl FnOnce(Result) + 'static, ) { let request = uri.to_string(); client.request_async( @@ -41,7 +41,7 @@ pub fn handle( base: Uri, cancellable: Cancellable, is_source_request: bool, // @TODO yet partial implementation - callback: Rc, + callback: impl FnOnce(Response) + 'static, ) { use ggemini::client::connection::response::{data::Text, meta::Status}; match result {