layer_climb_address/
config_ext.rs

1use 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}