From 93e26506c0211a3ebefa958e1df0d8cfbfc12b03 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 9 Apr 2025 02:11:48 +0500 Subject: upd: function signatures for RetrieveEmoteWS --- src/seventv.rs | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) (limited to 'src/seventv.rs') diff --git a/src/seventv.rs b/src/seventv.rs index dd4a939..fd44aeb 100644 --- a/src/seventv.rs +++ b/src/seventv.rs @@ -193,11 +193,14 @@ impl RetrieveEmoteAPI for SevenTVAPIClient { } } -pub struct SevenTVWSClient { +pub struct SevenTVWSClient +where + F: Fn(String, Option, Emote), +{ url: String, - on_emote_create: Option, Emote) + Send + Sync>>, - on_emote_update: Option, Emote) + Send + Sync>>, - on_emote_delete: Option, Emote) + Send + Sync>>, + on_emote_create: Option, + on_emote_update: Option, + on_emote_delete: Option, joined_channels: HashSet, awaiting_channels: HashSet, @@ -205,7 +208,27 @@ pub struct SevenTVWSClient { identified: bool, } -impl SevenTVWSClient { +impl RetrieveEmoteWS for SevenTVWSClient +where + F: Fn(String, Option, Emote), +{ + fn on_emote_create(&mut self, func: F) { + self.on_emote_create = Some(func); + } + + fn on_emote_update(&mut self, func: F) { + self.on_emote_update = Some(func); + } + + fn on_emote_delete(&mut self, func: F) { + self.on_emote_delete = Some(func); + } +} + +impl SevenTVWSClient +where + F: Fn(String, Option, Emote), +{ pub async fn new() -> Result<(WebSocketStream>, Self)> { let url = "wss://events.7tv.io/v3"; @@ -415,26 +438,3 @@ impl SevenTVWSClient { self.joined_channels.clear(); } } - -impl RetrieveEmoteWS for SevenTVWSClient { - fn on_emote_create( - &mut self, - func: &'static (dyn Fn(String, Option, Emote) + Send + Sync), - ) { - self.on_emote_create = Some(Box::new(func)); - } - - fn on_emote_update( - &mut self, - func: &'static (dyn Fn(String, Option, Emote) + Send + Sync), - ) { - self.on_emote_update = Some(Box::new(func)); - } - - fn on_emote_delete( - &mut self, - func: &'static (dyn Fn(String, Option, Emote) + Send + Sync), - ) { - self.on_emote_delete = Some(Box::new(func)); - } -} -- cgit v1.2.3