flutter_rust_bridge/handler/
executor.rs1use crate::codec::BaseCodec;
2use crate::handler::handler::{TaskContext, TaskInfo, TaskRetFutTrait};
3use std::future::Future;
4
5pub trait Executor {
10 #[cfg(feature = "thread-pool")]
13 fn execute_normal<Rust2DartCodec, TaskFn>(&self, task_info: TaskInfo, task: TaskFn)
14 where
15 TaskFn: FnOnce(TaskContext) -> Result<Rust2DartCodec::Message, Rust2DartCodec::Message>
16 + Send
17 + 'static,
18 Rust2DartCodec: BaseCodec;
19
20 fn execute_sync<Rust2DartCodec, SyncTaskFn>(
22 &self,
23 task_info: TaskInfo,
24 sync_task: SyncTaskFn,
25 ) -> Rust2DartCodec::Message
26 where
27 SyncTaskFn: FnOnce() -> Result<Rust2DartCodec::Message, Rust2DartCodec::Message>,
28 Rust2DartCodec: BaseCodec;
29
30 #[cfg(feature = "rust-async")]
31 fn execute_async<Rust2DartCodec, TaskFn, TaskRetFut>(&self, task_info: TaskInfo, task: TaskFn)
32 where
33 TaskFn: FnOnce(TaskContext) -> TaskRetFut + Send + 'static,
34 TaskRetFut: Future<Output = Result<Rust2DartCodec::Message, Rust2DartCodec::Message>>
35 + TaskRetFutTrait,
36 Rust2DartCodec: BaseCodec;
37}