pub struct Router<R: Runtime> { /* private fields */ }Expand description
Used for merging nested trait implementations. This is used when you have multiple trait implementations,
instead of taurpc::create_ipc_handler(). Use .merge() to add trait implementations to the router.
The trait must have the #[taurpc::procedures] macro and the nested routes should have #[taurpc::procedures(path = "path")].
§Examples
#[taurpc::procedures]
trait Api { }
#[derive(Clone)]
struct ApiImpl;
#[taurpc::resolveres]
impl Api for ApiImpl { }
#[taurpc::procedures(path = "events")]
trait Events { }
#[derive(Clone)]
struct EventsImpl;
#[taurpc::resolveres]
impl Events for EventsImpl { }
#[tokio::main]
async fn main() {
let router = Router::new()
.merge(ApiImpl.into_handler())
.merge(EventsImpl.into_handler());
tauri::Builder::default()
.invoke_handler(router.into_handler())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}Implementations§
Source§impl<R: Runtime> Router<R>
impl<R: Runtime> Router<R>
pub fn new() -> Self
Sourcepub fn export_config(self, config: Typescript) -> Self
pub fn export_config(self, config: Typescript) -> Self
Overwrite specta’s default TypeScript export options, look at the docs for
specta_typescript::Typescript for all the configuration options.
Example:
let router = Router::new()
.export_config(
specta_typescript::Typescript::default()
.header("// My header\n")
.bigint(specta_typescript::BigIntExportBehavior::String),
)
.merge(...);Sourcepub fn merge<H: TauRpcHandler<R>>(self, handler: H) -> Self
pub fn merge<H: TauRpcHandler<R>>(self, handler: H) -> Self
Add routes to the router, accepts a struct for which a #[taurpc::procedures] trait is implemented
let router = Router::new()
.merge(ApiImpl.into_handler())
.merge(EventsImpl.into_handler());Sourcepub fn into_handler(self) -> impl Fn(Invoke<R>) -> bool
pub fn into_handler(self) -> impl Fn(Invoke<R>) -> bool
Create a handler out of the router that allows your IPCs to be called from the frontend,
and generate the corresponding types. Use this inside .invoke_handler() on the tauri::Builder.
tauri::Builder::default()
.invoke_handler(router.into_handler())
.run(tauri::generate_context!())
.expect("error while running tauri application");Trait Implementations§
Auto Trait Implementations§
impl<R> Freeze for Router<R>
impl<R> !RefUnwindSafe for Router<R>
impl<R> Send for Router<R>
impl<R> Sync for Router<R>
impl<R> Unpin for Router<R>
impl<R> !UnwindSafe for Router<R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more