X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fsign%2Ftype_resolver.rs;h=2a122da34470332e1147a427de86c864abe4adab;hb=3751398518cb5c9b26a596c0dc9b33571abcf756;hp=73d2cceb3e85f9d84bf2404d7d9cbbfc204598d0;hpb=5f58f8d127d0b12cb02f4a96d4637394c8e692e9;p=rust-lightning diff --git a/lightning/src/sign/type_resolver.rs b/lightning/src/sign/type_resolver.rs index 73d2cceb..2a122da3 100644 --- a/lightning/src/sign/type_resolver.rs +++ b/lightning/src/sign/type_resolver.rs @@ -1,33 +1,43 @@ -use crate::sign::{ChannelSigner, EcdsaChannelSigner}; +use core::ops::Deref; +use crate::sign::{ChannelSigner, SignerProvider}; -pub(crate) enum ChannelSignerType { +pub(crate) enum ChannelSignerType where SP::Target: SignerProvider { // in practice, this will only ever be an EcdsaChannelSigner (specifically, Writeable) - Ecdsa(ECS) + Ecdsa(::EcdsaSigner), + #[cfg(taproot)] + Taproot(::TaprootSigner), } -impl ChannelSignerType{ +impl ChannelSignerType where SP::Target: SignerProvider { pub(crate) fn as_ref(&self) -> &dyn ChannelSigner { match self { - ChannelSignerType::Ecdsa(ecs) => ecs + ChannelSignerType::Ecdsa(ecs) => ecs, + #[cfg(taproot)] + ChannelSignerType::Taproot(tcs) => tcs, } } pub(crate) fn as_mut(&mut self) -> &mut dyn ChannelSigner { match self { - ChannelSignerType::Ecdsa(ecs) => ecs + ChannelSignerType::Ecdsa(ecs) => ecs, + #[cfg(taproot)] + ChannelSignerType::Taproot(tcs) => tcs, } } - pub(crate) fn as_ecdsa(&self) -> Option<&ECS> { + #[allow(unused)] + pub(crate) fn as_ecdsa(&self) -> Option<&::EcdsaSigner> { match self { - ChannelSignerType::Ecdsa(ecs) => Some(ecs) + ChannelSignerType::Ecdsa(ecs) => Some(ecs), + _ => None } } #[allow(unused)] - pub(crate) fn as_mut_ecdsa(&mut self) -> Option<&mut ECS> { + pub(crate) fn as_mut_ecdsa(&mut self) -> Option<&mut ::EcdsaSigner> { match self { - ChannelSignerType::Ecdsa(ecs) => Some(ecs) + ChannelSignerType::Ecdsa(ecs) => Some(ecs), + _ => None } } }