diff --git a/bitcoin/src/p2p/mod.rs b/bitcoin/src/p2p/mod.rs index 997f9e1dd..33df5a5b3 100644 --- a/bitcoin/src/p2p/mod.rs +++ b/bitcoin/src/p2p/mod.rs @@ -251,40 +251,32 @@ impl FromStr for Magic { } } -macro_rules! generate_network_magic_conversion { - ($(Network::$network:ident$((TestnetVersion::$testnet_version:ident))? => Magic::$magic:ident,)*) => { - impl From for Magic { - fn from(network: Network) -> Magic { - match network { - $( - Network::$network$((TestnetVersion::$testnet_version))? => Magic::$magic, - )* - } - } +impl From for Magic { + fn from(network: Network) -> Self { + match network { + Network::Bitcoin => Magic::BITCOIN, + Network::Testnet(TestnetVersion::V3) => Magic::TESTNET3, + Network::Testnet(TestnetVersion::V4) => Magic::TESTNET4, + Network::Signet => Magic::SIGNET, + Network::Regtest => Magic::REGTEST, + // Remember to add the `TryFrom` for new networks } - - impl TryFrom for Network { - type Error = UnknownMagicError; - - fn try_from(magic: Magic) -> Result { - match magic { - $( - Magic::$magic => Ok(Network::$network$((TestnetVersion::$testnet_version))?), - )* - _ => Err(UnknownMagicError(magic)), - } - } - } - }; + } } -// Generate conversion functions for all known networks. -// `Network -> Magic` and `Magic -> Network` -generate_network_magic_conversion! { - Network::Bitcoin => Magic::BITCOIN, - Network::Testnet(TestnetVersion::V3) => Magic::TESTNET3, - Network::Testnet(TestnetVersion::V4) => Magic::TESTNET4, - Network::Signet => Magic::SIGNET, - Network::Regtest => Magic::REGTEST, + +impl TryFrom for Network { + type Error = UnknownMagicError; + + fn try_from(magic: Magic) -> Result { + match magic { + Magic::BITCOIN => Ok(Network::Bitcoin), + Magic::TESTNET3 => Ok(Network::Testnet(TestnetVersion::V3)), + Magic::TESTNET4 => Ok(Network::Testnet(TestnetVersion::V4)), + Magic::SIGNET => Ok(Network::Signet), + Magic::REGTEST => Ok(Network::Regtest), + _ => Err(UnknownMagicError(magic)), + } + } } impl fmt::Display for Magic {