From af6362ce3e9f0ed120197989e7b80ec56fff5bb4 Mon Sep 17 00:00:00 2001 From: Adrian Wannenmacher Date: Tue, 13 Dec 2022 12:42:18 +0100 Subject: [PATCH] deny missing docs in router --- packages/router-core/src/service.rs | 2 +- packages/router/README.md | 64 ++++++++++++++++++++--- packages/router/src/hooks/use_navigate.rs | 2 + packages/router/src/hooks/use_route.rs | 4 +- packages/router/src/hooks/use_router.rs | 9 ++-- packages/router/src/lib.rs | 12 ++--- 6 files changed, 71 insertions(+), 22 deletions(-) diff --git a/packages/router-core/src/service.rs b/packages/router-core/src/service.rs index c73193c67..2bde83ffe 100644 --- a/packages/router-core/src/service.rs +++ b/packages/router-core/src/service.rs @@ -111,7 +111,7 @@ where /// /// # Returns /// 1. The [`RouterService`]. - /// 2. A [`Sender`] to send [`RouterMessage`]s to the [`RouterService`]. + /// 2. An [`UnboundedSender`] to send [`RouterMessage`]s to the [`RouterService`]. /// 3. Access to the [`RouterState`]. **DO NOT WRITE TO THIS!!!** Seriously, **READ ONLY!!!** #[allow(clippy::type_complexity)] pub fn new( diff --git a/packages/router/README.md b/packages/router/README.md index ffd04ef0e..196fa55af 100644 --- a/packages/router/README.md +++ b/packages/router/README.md @@ -51,15 +51,63 @@ Dioxus Router is a first-party Router for all your Dioxus Apps. It provides a React-Router style interface that works anywhere: across the browser, SSR, and natively. -```rust, ignore -fn app() { - cx.render(rsx! { - Router { - Route { to: "/", Component {} }, - Route { to: "/blog", Blog {} }, - Route { to: "/blog/:id", BlogPost {} }, +```rust ,no_run +use dioxus::prelude::*; +use dioxus_router::prelude::*; + +fn App(cx: Scope) -> Element { + use_router( + &cx, + &|| Default::default(), + &|| Segment::content(comp(Index)).fixed( + "blog", + Route::content(comp(Blog)).nested( + Segment::content(comp(BlogList)) + .catch_all((comp(BlogPost), BlogPost)) + ) + ) + ); + + render! { + Outlet { } + } +} + +fn Index(cx: Scope) -> Element { + render! { + h1 { "Index" } + Link { + target: "/blog", + "Go to the blog" } - }) + } +} + +fn Blog(cx: Scope) -> Element { + render! { + h1 { "Blog" } + Outlet { } + } +} + +fn BlogList(cx: Scope) -> Element { + render! { + h2 { "List of blog posts" } + Link { + target: "/blog/1", + "Blog post 1" + } + Link { + target: "/blog/1", + "Blog post 2" + } + } +} + +fn BlogPost(cx: Scope) -> Element { + render! { + h2 { "Blog Post" } + } } ``` diff --git a/packages/router/src/hooks/use_navigate.rs b/packages/router/src/hooks/use_navigate.rs index c09b8af75..0551abd6f 100644 --- a/packages/router/src/hooks/use_navigate.rs +++ b/packages/router/src/hooks/use_navigate.rs @@ -10,6 +10,8 @@ use crate::{RouterError, utils::use_router_internal::use_router_internal}; /// component calling the [`use_router`] hook. /// - Otherwise [`Ok`]. /// +/// [`use_router`]: crate::hooks::use_router +/// /// # Panic /// - When the calling component is not nested within another component calling the [`use_router`] /// hook, but only in debug builds. diff --git a/packages/router/src/hooks/use_route.rs b/packages/router/src/hooks/use_route.rs index 5b8b83e06..b1de258b7 100644 --- a/packages/router/src/hooks/use_route.rs +++ b/packages/router/src/hooks/use_route.rs @@ -2,7 +2,7 @@ use async_rwlock::RwLockReadGuard; use dioxus::{core::Component, prelude::ScopeState}; use dioxus_router_core::RouterState; -use crate::{RouterError, utils::use_router_internal::use_router_internal}; +use crate::{utils::use_router_internal::use_router_internal, RouterError}; /// A hook that provides access to information about the current routing location. /// @@ -55,7 +55,7 @@ use crate::{RouterError, utils::use_router_internal::use_router_internal}; /// # assert_eq!(dioxus_ssr::render(&vdom), "

App

Current Path

/some/path

") /// ``` /// -/// [`use_router`]: super::use_router +/// [`use_router`]: crate::hooks::use_router #[must_use] pub fn use_route<'a>( cx: &'a ScopeState, diff --git a/packages/router/src/hooks/use_router.rs b/packages/router/src/hooks/use_router.rs index 7c46c43dc..1a5957cf5 100644 --- a/packages/router/src/hooks/use_router.rs +++ b/packages/router/src/hooks/use_router.rs @@ -27,15 +27,16 @@ use crate::{ /// /// # Return values /// This hook returns the current router state and a navigator. For more information about the -/// state, see the [`use_route`](super::use_route) hook. For more information about the -/// [`Navigator`], see its own documentation and the [`use_navigate`](super::use_navigate) hook. +/// state, see the [`use_route`](crate::hooks::use_route) hook. For more information about the +/// [`Navigator`], see its own documentation and the [`use_navigate`](crate::hooks::use_navigate) +/// hook. /// /// # Panic /// - When used within a component, that is nested inside another component calling [`use_router`], /// but only in debug builds. /// /// # Example -/// ```rust,no_run +/// ```rust /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; /// fn App(cx: Scope) -> Element { @@ -129,7 +130,7 @@ pub fn use_router<'a>( /// Global configuration options for the router. /// /// This implements [`Default`], so you can use it like this: -/// ```rust +/// ```rust,no_run /// # use dioxus_router::prelude::RouterConfiguration; /// let cfg = RouterConfiguration { /// synchronous: false, diff --git a/packages/router/src/lib.rs b/packages/router/src/lib.rs index 3164e0a15..5ef4669aa 100644 --- a/packages/router/src/lib.rs +++ b/packages/router/src/lib.rs @@ -1,5 +1,8 @@ +#![doc = include_str!("../README.md")] +// cannot use forbid, because props derive macro generates #[allow(missing_docs)] +#![deny(missing_docs)] + /// Components interacting with the router. -#[deny(missing_docs)] pub mod components { pub(crate) mod default_errors; @@ -17,16 +20,12 @@ mod contexts { pub(crate) mod router; } -#[forbid(missing_docs)] mod error; pub use error::RouterError; -pub mod history { - pub use dioxus_router_core::history::*; -} +pub use dioxus_router_core::history; /// Hooks for interacting with the router in components. -#[forbid(missing_docs)] pub mod hooks { mod use_navigate; pub use use_navigate::*; @@ -39,7 +38,6 @@ pub mod hooks { } /// A collection of useful items most applications might need. -#[forbid(missing_docs)] pub mod prelude { pub use dioxus_router_core::prelude::*;