Merge rust-bitcoin/rust-bitcoin#4568: Remove conversion impl macro for `Magic`/`Network`
028a0d6558
Remove conversion impl macro for `Magic`/`Network` (rustaceanrob) Pull request description: Closes #4560 (or at least one way to close it) Handle the coversion of new networks directly in the `From` and `TryFrom` implementations, as new networks are added infrequently. ACKs for top commit: tcharding: ACK028a0d6558
apoelstra: ACK 028a0d6558129f554de8c4247481bc0ad80f1c27; successfully ran local tests Tree-SHA512: 07b768e229305878849f23e54d3fb4940a736ce44122950e4f4bf68ddeb4f82f2d35020840e8176bd7b562726e46055650ba6de8559bae7559c881b64a437169
This commit is contained in:
commit
a746456601
|
@ -251,14 +251,15 @@ impl FromStr for Magic {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! generate_network_magic_conversion {
|
|
||||||
($(Network::$network:ident$((TestnetVersion::$testnet_version:ident))? => Magic::$magic:ident,)*) => {
|
|
||||||
impl From<Network> for Magic {
|
impl From<Network> for Magic {
|
||||||
fn from(network: Network) -> Magic {
|
fn from(network: Network) -> Self {
|
||||||
match network {
|
match network {
|
||||||
$(
|
Network::Bitcoin => Magic::BITCOIN,
|
||||||
Network::$network$((TestnetVersion::$testnet_version))? => Magic::$magic,
|
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<Magic>` for new networks
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,24 +269,15 @@ macro_rules! generate_network_magic_conversion {
|
||||||
|
|
||||||
fn try_from(magic: Magic) -> Result<Self, Self::Error> {
|
fn try_from(magic: Magic) -> Result<Self, Self::Error> {
|
||||||
match magic {
|
match magic {
|
||||||
$(
|
Magic::BITCOIN => Ok(Network::Bitcoin),
|
||||||
Magic::$magic => Ok(Network::$network$((TestnetVersion::$testnet_version))?),
|
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)),
|
_ => 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 fmt::Display for Magic {
|
impl fmt::Display for Magic {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||||||
|
|
Loading…
Reference in New Issue