diff --git a/keyforkd/src/service.rs b/keyforkd/src/service.rs index 5e2db9a..66a62fc 100644 --- a/keyforkd/src/service.rs +++ b/keyforkd/src/service.rs @@ -4,6 +4,9 @@ use keyfork_derive_util::request::{DerivationError, DerivationRequest, Derivatio use keyfork_mnemonic_util::Mnemonic; use tower::Service; +// NOTE: All values implemented in Keyforkd must implement Clone with low overhead, either by +// using an Arc or by having a small signature. This is because Service takes &mut self. + #[derive(Clone, Debug)] pub struct Keyforkd { mnemonic: Arc, @@ -33,7 +36,7 @@ impl Service for Keyforkd { #[cfg_attr(feature = "tracing", tracing::instrument(skip(self)))] fn call(&mut self, req: DerivationRequest) -> Self::Future { - let app = self.clone(); - Box::pin(async { req.derive_with_mnemonic(&app.mnemonic) }) + let mnemonic = self.mnemonic.clone(); + Box::pin(async { req.derive_with_mnemonic(&mnemonic) }) } }