use Router;
/// The Arcature HTTP application kernel.
///
/// `App<S>` wraps an [`axum::Router<S>`]. The state type parameter `S` is the
/// state Axum handlers on this app may extract via
/// [`axum::extract::State`]; it defaults to `()` for a stateless app. The
/// compiler tracks `S` across construction — Arcature does not erase it.
///
/// Build with [`App::new`], [`App::from_router`], and the routing/composition
/// methods; resolve state with [`App::with_state`]; serve with
/// [`App::serve`] or [`App::serve_with_shutdown`].
///
/// [`axum::extract::State`]: axum::extract::State