Sfoglia il codice sorgente

Fix custom launch builder with unsized context types (#2920)

Evan Almloff 9 mesi fa
parent
commit
6ff7a54706
1 ha cambiato i file con 27 aggiunte e 1 eliminazioni
  1. 27 1
      packages/dioxus/src/launch.rs

+ 27 - 1
packages/dioxus/src/launch.rs

@@ -123,7 +123,33 @@ impl LaunchBuilder {
     /// Provide a custom launch function for your application.
     ///
     /// Useful for third party renderers to tap into the launch builder API without having to reimplement it.
-    pub fn custom<Cfg, List>(launch_fn: LaunchFn<Cfg, List>) -> LaunchBuilder<Cfg, List> {
+    ///
+    /// # Example
+    /// ```rust, no_run
+    /// use dioxus::prelude::*;
+    /// use std::any::Any;
+    ///
+    /// #[derive(Default)]
+    /// struct Config;
+    ///
+    /// fn my_custom_launcher(root: fn() -> Element, contexts: Vec<Box<dyn Any>>, cfg: Config) {
+    ///     println!("launching with root: {:?}", root());
+    ///     loop {
+    ///         println!("running...");
+    ///     }
+    /// }
+    ///
+    /// fn app() -> Element {
+    ///     rsx! {
+    ///         div { "Hello, world!" }
+    ///     }
+    /// }
+    ///
+    /// LaunchBuilder::custom(my_custom_launcher).launch(app);
+    /// ```
+    pub fn custom<Config, Context: ?Sized>(
+        launch_fn: LaunchFn<Config, Context>,
+    ) -> LaunchBuilder<Config, Context> {
         LaunchBuilder {
             launch_fn,
             contexts: vec![],