diff --git a/.changelog/unreleased/improvements/ibc/2279-u256-serde-derive.md b/.changelog/unreleased/improvements/ibc/2279-u256-serde-derive.md new file mode 100644 index 0000000000..8b95125a33 --- /dev/null +++ b/.changelog/unreleased/improvements/ibc/2279-u256-serde-derive.md @@ -0,0 +1 @@ +- Derive `serde::{Serialize, Deserialize}` for `U256`. ([#2279](https://github.com/informalsystems/ibc-rs/issues/2279)) diff --git a/.changelog/unreleased/improvements/ibc/2280-ics20-api-improvements.md b/.changelog/unreleased/improvements/ibc/2280-ics20-api-improvements.md new file mode 100644 index 0000000000..0a7c3ef6f2 --- /dev/null +++ b/.changelog/unreleased/improvements/ibc/2280-ics20-api-improvements.md @@ -0,0 +1,2 @@ +- Remove unnecessary supertraits requirements from ICS20 traits. +([#2280](https://github.com/informalsystems/ibc-rs/pull/2280)) diff --git a/Cargo.lock b/Cargo.lock index fc8906a7c2..10625d152f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1002,6 +1002,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "static_assertions", +] + [[package]] name = "flate2" version = "1.0.23" @@ -1471,6 +1480,7 @@ dependencies = [ "ics23", "modelator 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits", + "primitive-types", "prost", "prost-types", "safe-regex", @@ -1720,6 +1730,15 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + [[package]] name = "indenter" version = "0.3.3" @@ -2351,6 +2370,17 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +[[package]] +name = "primitive-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" +dependencies = [ + "fixed-hash", + "impl-serde", + "uint", +] + [[package]] name = "proc-macro-error" version = "1.0.4" diff --git a/modules/Cargo.toml b/modules/Cargo.toml index 9a6b3374e1..ec112febce 100644 --- a/modules/Cargo.toml +++ b/modules/Cargo.toml @@ -44,6 +44,7 @@ flex-error = { version = "0.4.4", default-features = false } num-traits = { version = "0.2.15", default-features = false } derive_more = { version = "0.99.17", default-features = false, features = ["from", "into", "display"] } uint = { version = "0.9", default-features = false } +primitive-types = { version = "0.11.1", default-features = false, features = ["serde_no_std"] } [dependencies.tendermint] version = "=0.23.7" diff --git a/modules/src/applications/transfer/context.rs b/modules/src/applications/transfer/context.rs index 13220ca87b..89ca094396 100644 --- a/modules/src/applications/transfer/context.rs +++ b/modules/src/applications/transfer/context.rs @@ -14,7 +14,6 @@ use crate::core::ics04_channel::context::{ChannelKeeper, ChannelReader}; use crate::core::ics04_channel::msgs::acknowledgement::Acknowledgement as GenericAcknowledgement; use crate::core::ics04_channel::packet::Packet; use crate::core::ics04_channel::Version; -use crate::core::ics05_port::context::PortReader; use crate::core::ics24_host::identifier::{ChannelId, ConnectionId, PortId}; use crate::core::ics26_routing::context::{ModuleOutputBuilder, OnRecvPacketAck}; use crate::prelude::*; @@ -26,7 +25,7 @@ pub trait Ics20Keeper: type AccountId; } -pub trait Ics20Reader: ChannelReader + PortReader { +pub trait Ics20Reader: ChannelReader { type AccountId: TryFrom; /// get_port returns the portID for the transfer module. diff --git a/modules/src/applications/transfer/denom.rs b/modules/src/applications/transfer/denom.rs index 998f731a40..6e476b08b7 100644 --- a/modules/src/applications/transfer/denom.rs +++ b/modules/src/applications/transfer/denom.rs @@ -278,7 +278,9 @@ impl fmt::Display for PrefixedDenom { } /// A type for representing token transfer amounts. -#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord, Display, From, Into)] +#[derive( + Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord, Serialize, Deserialize, Display, From, Into, +)] pub struct Amount(U256); impl Amount { diff --git a/modules/src/bigint.rs b/modules/src/bigint.rs index f681f75308..4b33e02332 100644 --- a/modules/src/bigint.rs +++ b/modules/src/bigint.rs @@ -1,8 +1 @@ -#![allow(clippy::assign_op_pattern)] -#![allow(clippy::ptr_offset_with_cast)] - -use uint::construct_uint; - -construct_uint! { - pub struct U256(4); -} +pub use primitive_types::U256; diff --git a/modules/src/core/ics26_routing/context.rs b/modules/src/core/ics26_routing/context.rs index c22cc0a14c..33cb5bca25 100644 --- a/modules/src/core/ics26_routing/context.rs +++ b/modules/src/core/ics26_routing/context.rs @@ -95,7 +95,7 @@ impl OnRecvPacketAck { pub type ModuleOutputBuilder = HandlerOutputBuilder<(), ModuleEvent>; -pub trait Module: Debug + Send + Sync + AsAnyMut + 'static { +pub trait Module: Send + Sync + AsAnyMut { #[allow(clippy::too_many_arguments)] fn on_chan_open_init( &mut self, diff --git a/modules/src/mock/context.rs b/modules/src/mock/context.rs index 4c59475803..07ed127984 100644 --- a/modules/src/mock/context.rs +++ b/modules/src/mock/context.rs @@ -6,7 +6,7 @@ use alloc::collections::btree_map::BTreeMap; use alloc::sync::Arc; use core::borrow::Borrow; use core::cmp::min; -use core::fmt::Debug; +use core::fmt::{Debug, Formatter}; use core::ops::{Add, Sub}; use core::time::Duration; use std::sync::Mutex; @@ -612,9 +612,15 @@ impl RouterBuilder for MockRouterBuilder { } } -#[derive(Clone, Debug, Default)] +#[derive(Clone, Default)] pub struct MockRouter(BTreeMap>); +impl Debug for MockRouter { + fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result { + write!(f, "{:?}", self.0.keys().collect::>()) + } +} + impl Router for MockRouter { fn get_route_mut(&mut self, module_id: &impl Borrow) -> Option<&mut dyn Module> { self.0.get_mut(module_id.borrow()).and_then(Arc::get_mut)