diff --git a/crates/axum-app-wrapper-macros/src/lib.rs b/crates/axum-app-wrapper-macros/src/lib.rs index a553c09..a0d325f 100644 --- a/crates/axum-app-wrapper-macros/src/lib.rs +++ b/crates/axum-app-wrapper-macros/src/lib.rs @@ -20,12 +20,14 @@ use syn::{Data, DeriveInput, Fields, parse_macro_input}; /// pool: Pool, /// db: Db, /// } +/// // To wrap the whole state in `Arc`, implement `TryFrom` for `Arc`: +/// impl TryFrom for Arc { +/// type Error = anyhow::Error; /// -/// // Plain state — axum will clone the whole struct on each request: -/// App::::new() -/// -/// // Or wrap in Arc yourself for cheap clones: -/// App::>::new() +/// fn try_from(map: TypeMap) -> Result { +/// Ok(Self(Arc::new(AppState::try_from(map)?))) +/// } +/// } /// ``` #[proc_macro_derive(AppState)] pub fn derive_app_state(input: TokenStream) -> TokenStream {