mirror of
https://github.com/tokio-rs/axum.git
synced 2026-08-27 00:00:24 +02:00
Type safe state inheritance (#1532)
* Make state type safe * fix examples * remove unnecessary `#[track_caller]`s * Router::into_service -> Router::with_state * fixup docs * macro docs * add missing docs * fix examples * format * changelog * Update trybuild tests * Make sure fallbacks are still inherited for opaque services (#1540) * Document nesting routers with different state * fix leftover conflicts
This commit is contained in:
@@ -255,11 +255,11 @@ mod tests {
|
||||
custom_key: CustomKey(Key::generate()),
|
||||
};
|
||||
|
||||
let app = Router::<_, Body>::with_state(state)
|
||||
let app = Router::<_, Body>::new()
|
||||
.route("/set", get(set_cookie))
|
||||
.route("/get", get(get_cookie))
|
||||
.route("/remove", get(remove_cookie))
|
||||
.into_service();
|
||||
.with_state(state);
|
||||
|
||||
let res = app
|
||||
.clone()
|
||||
@@ -352,9 +352,9 @@ mod tests {
|
||||
custom_key: CustomKey(Key::generate()),
|
||||
};
|
||||
|
||||
let app = Router::<_, Body>::with_state(state)
|
||||
let app = Router::<_, Body>::new()
|
||||
.route("/get", get(get_cookie))
|
||||
.into_service();
|
||||
.with_state(state);
|
||||
|
||||
let res = app
|
||||
.clone()
|
||||
|
||||
@@ -64,10 +64,11 @@ use std::{convert::Infallible, fmt, marker::PhantomData};
|
||||
/// key: Key::generate(),
|
||||
/// };
|
||||
///
|
||||
/// let app = Router::with_state(state)
|
||||
/// let app = Router::new()
|
||||
/// .route("/set", post(set_secret))
|
||||
/// .route("/get", get(get_secret));
|
||||
/// # let app: Router<_> = app;
|
||||
/// .route("/get", get(get_secret))
|
||||
/// .with_state(state);
|
||||
/// # let _: axum::routing::RouterService = app;
|
||||
/// ```
|
||||
pub struct PrivateCookieJar<K = Key> {
|
||||
jar: cookie::CookieJar,
|
||||
|
||||
@@ -82,10 +82,11 @@ use std::{convert::Infallible, fmt, marker::PhantomData};
|
||||
/// key: Key::generate(),
|
||||
/// };
|
||||
///
|
||||
/// let app = Router::with_state(state)
|
||||
/// let app = Router::new()
|
||||
/// .route("/sessions", post(create_session))
|
||||
/// .route("/me", get(me));
|
||||
/// # let app: Router<_> = app;
|
||||
/// .route("/me", get(me))
|
||||
/// .with_state(state);
|
||||
/// # let _: axum::routing::RouterService = app;
|
||||
/// ```
|
||||
pub struct SignedCookieJar<K = Key> {
|
||||
jar: cookie::CookieJar,
|
||||
|
||||
Reference in New Issue
Block a user