From 6786ff4c6781e020af3bfd6d3306c8f899c11c85 Mon Sep 17 00:00:00 2001 From: arctic_hen7 Date: Wed, 8 Sep 2021 14:12:02 +1000 Subject: [PATCH] =?UTF-8?q?perf:=20=E2=9A=A1=EF=B8=8F=20switched=20to=20`R?= =?UTF-8?q?c`=20to=20avoid=20producing=20unnecessary=20`ErrorP?= =?UTF-8?q?ages`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/cli/.perseus/src/lib.rs | 5 +++-- packages/perseus/src/shell.rs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/cli/.perseus/src/lib.rs b/examples/cli/.perseus/src/lib.rs index fd5a8c58df..32c7b0a95b 100644 --- a/examples/cli/.perseus/src/lib.rs +++ b/examples/cli/.perseus/src/lib.rs @@ -25,12 +25,13 @@ pub fn run() -> Result<(), JsValue> { // Create a mutable translations manager to control caching let translations_manager = Rc::new(RefCell::new(ClientTranslationsManager::new(&get_locales()))); + // Get the error pages in an `Rc` so we aren't creating hundreds of them + let error_pages = Rc::new(get_error_pages()); sycamore::render_to( || { template! { BrowserRouter(move |route: AppRoute| { - // TODO improve performance rather than naively copying error pages for every template (use `Rc`) match route { // We handle the 404 for the user for convenience AppRoute::NotFound => get_error_pages().get_template_for_page("", &404, "not found"), @@ -44,7 +45,7 @@ pub fn run() -> Result<(), JsValue> { locale, // We give the app shell a translations manager and let it get the `Rc` (because it can do async safely) Rc::clone(&translations_manager), - get_error_pages() + Rc::clone(&error_pages) ) } } diff --git a/packages/perseus/src/shell.rs b/packages/perseus/src/shell.rs index 93712d1beb..91868a8929 100644 --- a/packages/perseus/src/shell.rs +++ b/packages/perseus/src/shell.rs @@ -115,7 +115,7 @@ pub fn app_shell( // translator: Rc, locale: String, translations_manager: Rc>, - error_pages: ErrorPages, + error_pages: Rc, ) -> Template { // Get the container as a DOM element let container = NodeRef::new();