Skip to content

Commit a746456

Browse files
committed
Merge rust-bitcoin#4568: Remove conversion impl macro for Magic/Network
028a0d6 Remove conversion impl macro for `Magic`/`Network` (rustaceanrob) Pull request description: Closes rust-bitcoin#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: ACK 028a0d6 apoelstra: ACK 028a0d6; successfully ran local tests Tree-SHA512: 07b768e229305878849f23e54d3fb4940a736ce44122950e4f4bf68ddeb4f82f2d35020840e8176bd7b562726e46055650ba6de8559bae7559c881b64a437169
2 parents fa07198 + 028a0d6 commit a746456

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

bitcoin/src/p2p/mod.rs

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -251,40 +251,32 @@ impl FromStr for Magic {
251251
}
252252
}
253253

254-
macro_rules! generate_network_magic_conversion {
255-
($(Network::$network:ident$((TestnetVersion::$testnet_version:ident))? => Magic::$magic:ident,)*) => {
256-
impl From<Network> for Magic {
257-
fn from(network: Network) -> Magic {
258-
match network {
259-
$(
260-
Network::$network$((TestnetVersion::$testnet_version))? => Magic::$magic,
261-
)*
262-
}
263-
}
254+
impl From<Network> for Magic {
255+
fn from(network: Network) -> Self {
256+
match network {
257+
Network::Bitcoin => Magic::BITCOIN,
258+
Network::Testnet(TestnetVersion::V3) => Magic::TESTNET3,
259+
Network::Testnet(TestnetVersion::V4) => Magic::TESTNET4,
260+
Network::Signet => Magic::SIGNET,
261+
Network::Regtest => Magic::REGTEST,
262+
// Remember to add the `TryFrom<Magic>` for new networks
264263
}
264+
}
265+
}
265266

266-
impl TryFrom<Magic> for Network {
267-
type Error = UnknownMagicError;
267+
impl TryFrom<Magic> for Network {
268+
type Error = UnknownMagicError;
268269

269-
fn try_from(magic: Magic) -> Result<Self, Self::Error> {
270-
match magic {
271-
$(
272-
Magic::$magic => Ok(Network::$network$((TestnetVersion::$testnet_version))?),
273-
)*
274-
_ => Err(UnknownMagicError(magic)),
275-
}
276-
}
270+
fn try_from(magic: Magic) -> Result<Self, Self::Error> {
271+
match magic {
272+
Magic::BITCOIN => Ok(Network::Bitcoin),
273+
Magic::TESTNET3 => Ok(Network::Testnet(TestnetVersion::V3)),
274+
Magic::TESTNET4 => Ok(Network::Testnet(TestnetVersion::V4)),
275+
Magic::SIGNET => Ok(Network::Signet),
276+
Magic::REGTEST => Ok(Network::Regtest),
277+
_ => Err(UnknownMagicError(magic)),
277278
}
278-
};
279-
}
280-
// Generate conversion functions for all known networks.
281-
// `Network -> Magic` and `Magic -> Network`
282-
generate_network_magic_conversion! {
283-
Network::Bitcoin => Magic::BITCOIN,
284-
Network::Testnet(TestnetVersion::V3) => Magic::TESTNET3,
285-
Network::Testnet(TestnetVersion::V4) => Magic::TESTNET4,
286-
Network::Signet => Magic::SIGNET,
287-
Network::Regtest => Magic::REGTEST,
279+
}
288280
}
289281

290282
impl fmt::Display for Magic {

0 commit comments

Comments
 (0)