Make blanket implementation of FromRef more general

This commit is contained in:
Jonas Platte
2022-09-30 11:13:46 +02:00
parent b94248191e
commit 7d33853391
3 changed files with 8 additions and 5 deletions
+6 -3
View File
@@ -1,3 +1,5 @@
use std::borrow::Borrow;
/// Used to do reference-to-value conversions thus not consuming the input value.
///
/// This is mainly used with [`State`] to extract "substates" from a reference to main application
@@ -13,11 +15,12 @@ pub trait FromRef<T> {
fn from_ref(input: &T) -> Self;
}
impl<T> FromRef<T> for T
impl<T, U> FromRef<T> for U
where
T: Clone,
T: Borrow<U>,
U: Clone,
{
fn from_ref(input: &T) -> Self {
input.clone()
input.borrow().clone()
}
}
+1 -1
View File
@@ -469,7 +469,7 @@ async fn merging_routes_different_paths_different_states() {
#[tokio::test]
async fn inherit_state_via_merge() {
let foo = Router::inherit_state().route(
let foo = Router::<&'static str>::inherit_state().route(
"/foo",
get(|State(state): State<&'static str>| async move { state }),
);
+1 -1
View File
@@ -473,7 +473,7 @@ async fn nesting_with_different_state() {
#[tokio::test]
async fn inherit_state_via_nest() {
let foo = Router::inherit_state().route(
let foo = Router::<&'static str>::inherit_state().route(
"/foo",
get(|State(state): State<&'static str>| async move { state }),
);