@@ -22,7 +22,7 @@ use std::{
2222/// // here you can put configuration, database connection pools, or whatever
2323/// // state you need
2424/// //
25- /// // see "When states need to implement `Clone`" for more details on why we need
25+ /// // see "Why states need to implement `Clone`" for more details on why we need
2626/// // `#[derive(Clone)]` here.
2727/// #[derive(Clone)]
2828/// struct AppState {}
@@ -247,14 +247,14 @@ use std::{
247247/// }
248248/// ```
249249///
250- /// # When states need to implement `Clone`
250+ /// # Why states need to implement `Clone`
251251///
252252/// Your top level state type must implement `Clone` to be extractable with `State`:
253253///
254254/// ```
255255/// use axum::extract::State;
256256///
257- /// // no substates, so to extract to `State<AppState>` we must implement `Clone` for `AppState`
257+ /// // to extract to `State<AppState>` we must implement `Clone` for `AppState`
258258/// #[derive(Clone)]
259259/// struct AppState {}
260260///
@@ -265,32 +265,6 @@ use std::{
265265///
266266/// This works because of [`impl<S> FromRef<S> for S where S: Clone`][`FromRef`].
267267///
268- /// This is also true if you're extracting substates, unless you _never_ extract the top level
269- /// state itself:
270- ///
271- /// ```
272- /// use axum::extract::{State, FromRef};
273- ///
274- /// // we never extract `State<AppState>`, just `State<InnerState>`. So `AppState` doesn't need to
275- /// // implement `Clone`
276- /// struct AppState {
277- /// inner: InnerState,
278- /// }
279- ///
280- /// #[derive(Clone)]
281- /// struct InnerState {}
282- ///
283- /// impl FromRef<AppState> for InnerState {
284- /// fn from_ref(app_state: &AppState) -> InnerState {
285- /// app_state.inner.clone()
286- /// }
287- /// }
288- ///
289- /// async fn api_users(State(inner): State<InnerState>) {
290- /// // ...
291- /// }
292- /// ```
293- ///
294268/// In general however we recommend you implement `Clone` for all your state types to avoid
295269/// potential type errors.
296270///
0 commit comments