layer_climb_address/
config_ext.rs1use crate::{address::Address, key::PublicKey};
2use anyhow::Result;
3use layer_climb_config::{AddrKind, ChainConfig};
4
5pub trait ConfigAddressExt {
6 fn parse_address(&self, value: &str) -> Result<Address>;
7 fn address_from_pub_key(&self, pub_key: &PublicKey) -> Result<Address>;
8}
9
10impl ConfigAddressExt for AddrKind {
11 fn parse_address(&self, value: &str) -> Result<Address> {
12 Address::try_from_str(value, self)
13 }
14
15 fn address_from_pub_key(&self, pub_key: &PublicKey) -> Result<Address> {
16 Address::try_from_pub_key(pub_key, self)
17 }
18}
19
20impl ConfigAddressExt for ChainConfig {
21 fn parse_address(&self, value: &str) -> Result<Address> {
22 self.address_kind.parse_address(value)
23 }
24
25 fn address_from_pub_key(&self, pub_key: &PublicKey) -> Result<Address> {
26 self.address_kind.address_from_pub_key(pub_key)
27 }
28}