Browse Source

Add Newtype so that Rust-url can be IntoRoutable (#1579)

* add newtype so that rust-url can IntoRoutable

* add doc line

* implement From<Url> directly

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Stephen Andary 1 year ago
parent
commit
b25fada776
1 changed files with 14 additions and 0 deletions
  1. 14 0
      packages/router/src/components/link.rs

+ 14 - 0
packages/router/src/components/link.rs

@@ -11,6 +11,8 @@ use crate::navigation::NavigationTarget;
 use crate::prelude::Routable;
 use crate::prelude::Routable;
 use crate::utils::use_router_internal::use_router_internal;
 use crate::utils::use_router_internal::use_router_internal;
 
 
+use url::Url;
+
 /// Something that can be converted into a [`NavigationTarget`].
 /// Something that can be converted into a [`NavigationTarget`].
 #[derive(Clone)]
 #[derive(Clone)]
 pub enum IntoRoutable {
 pub enum IntoRoutable {
@@ -53,6 +55,18 @@ impl From<&str> for IntoRoutable {
     }
     }
 }
 }
 
 
+impl From<Url> for IntoRoutable {
+    fn from(url: Url) -> Self {
+        IntoRoutable::FromStr(url.to_string())
+    }
+}
+
+impl From<&Url> for IntoRoutable {
+    fn from(url: &Url) -> Self {
+        IntoRoutable::FromStr(url.to_string())
+    }
+}
+
 /// The properties for a [`Link`].
 /// The properties for a [`Link`].
 #[derive(Props)]
 #[derive(Props)]
 pub struct LinkProps<'a> {
 pub struct LinkProps<'a> {