use serde::de::DeserializeOwned; use tauri::{ plugin::{PluginApi, PluginHandle}, AppHandle, Runtime, }; use crate::models::*; #[cfg(target_os = "ios")] tauri::ios_plugin_binding!(init_plugin_duck); // initializes the Kotlin or Swift plugin classes pub fn init( _app: &AppHandle, api: PluginApi, ) -> crate::Result> { #[cfg(target_os = "android")] let handle = api.register_android_plugin("de.cfp.duck", "DuckPlugin")?; #[cfg(target_os = "ios")] let handle = api.register_ios_plugin(init_plugin_duck)?; Ok(Duck(handle)) } /// Access to the duck APIs. pub struct Duck(PluginHandle); impl Duck { pub fn duck(&self) -> crate::Result { self .0 .run_mobile_plugin("duck") .map_err(Into::into) } pub fn unduck(&self) -> crate::Result { self .0 .run_mobile_plugin("unduck") .map_err(Into::into) } }