From 814b9917dad0d74e95f700f5474c8327754df084 Mon Sep 17 00:00:00 2001 From: Steven Roose Date: Sun, 9 Apr 2023 16:55:02 +0100 Subject: [PATCH 1/2] address: Add Sync, Send, Sized and UnPin marker traits on NetworkValidation --- bitcoin/src/address.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitcoin/src/address.rs b/bitcoin/src/address.rs index 533a83ef..899c3c57 100644 --- a/bitcoin/src/address.rs +++ b/bitcoin/src/address.rs @@ -616,7 +616,7 @@ mod sealed { /// Marker of status of address's network validation. See section [*Parsing addresses*](Address#parsing-addresses) /// on [`Address`] for details. -pub trait NetworkValidation: sealed::NetworkValidation { +pub trait NetworkValidation: sealed::NetworkValidation + Sync + Send + Sized + Unpin { /// Indicates whether this `NetworkValidation` is `NetworkChecked` or not. const IS_CHECKED: bool; } From ed6421c93961495f83a84c85e32fcdf3cf10fda6 Mon Sep 17 00:00:00 2001 From: Steven Roose Date: Sun, 9 Apr 2023 16:55:18 +0100 Subject: [PATCH 2/2] address: Add generic serde::Serialize for Address Otherwise a generic `Address` is not serializable. --- bitcoin/src/address.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/bitcoin/src/address.rs b/bitcoin/src/address.rs index 899c3c57..1d4c43b2 100644 --- a/bitcoin/src/address.rs +++ b/bitcoin/src/address.rs @@ -748,21 +748,18 @@ where V: NetworkValidation; #[cfg(feature = "serde")] -struct DisplayUnchecked<'a>(&'a Address); +struct DisplayUnchecked<'a, N: NetworkValidation>(&'a Address); #[cfg(feature = "serde")] -impl fmt::Display for DisplayUnchecked<'_> { +impl fmt::Display for DisplayUnchecked<'_, N> { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { self.0.fmt_internal(fmt) } } -#[cfg(feature = "serde")] -crate::serde_utils::serde_string_serialize_impl!(Address, "a Bitcoin address"); - #[cfg(feature = "serde")] crate::serde_utils::serde_string_deserialize_impl!(Address, "a Bitcoin address"); #[cfg(feature = "serde")] -impl serde::Serialize for Address { +impl serde::Serialize for Address { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer,