1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use crate::CallError;
#[doc(hidden)]
pub trait UiPageData {
fn path(&self) -> &str;
}
#[doc(hidden)]
#[cfg(target_arch = "wasm32")]
mod implz {
mod ui_page_wasm;
pub use self::ui_page_wasm::*;
}
#[doc(hidden)]
#[cfg(target_os = "android")]
mod implz {
mod ui_page_android;
pub use self::ui_page_android::*;
}
#[doc(hidden)]
#[cfg(target_os = "linux")]
mod implz {
mod ui_page_linux;
pub use self::ui_page_linux::*;
}
#[doc(hidden)]
pub use implz::system_depend_path;
pub trait UiPage: UiPageData {
type Data: 'static + serde::de::DeserializeOwned + serde::Serialize;
fn encode_data(
&self,
data: &Self::Data,
) -> Result<String, CallError> {
return implz::encode_data(data);
}
fn extract_launch_parameter(
&self,
s: &str,
) -> Result<Self::Data, CallError> {
return implz::extract_launch_parameter(s);
}
}
impl<T> dyn UiPage<Data = T>
where
T: 'static + serde::de::DeserializeOwned + serde::Serialize,
{
pub fn get_launch_parameter(&self) -> Result<T, CallError> {
return implz::get_launch_parameter(self);
}
pub fn open(&self) -> Result<(), CallError> {
return implz::open(self);
}
pub fn open_with_data(
&self,
data: &T,
) -> Result<(), CallError> {
return implz::open_with_data(self, data);
}
}