solana_block_decoder/address/
loaded_addresses.rs1use {
2 solana_pubkey::{
3 Pubkey,
4 ParsePubkeyError,
5 },
6 solana_transaction_status_client_types::{
7 UiLoadedAddresses,
8 },
9 serde::{
10 Deserialize, Serialize,
11 },
12 std::{
13 str::FromStr,
14 },
15};
16
17#[derive(Clone, Default, Debug, PartialEq, Eq, Serialize, Deserialize)]
20pub struct LoadedAddresses {
21 pub writable: Vec<Pubkey>,
23 pub readonly: Vec<Pubkey>,
25}
26
27impl TryFrom<&UiLoadedAddresses> for LoadedAddresses {
28 type Error = ParsePubkeyError;
29
30 fn try_from(ui_loaded_addresses: &UiLoadedAddresses) -> Result<Self, Self::Error> {
31 let writable: Result<Vec<Pubkey>, _> = ui_loaded_addresses
32 .writable
33 .iter()
34 .map(|s| Pubkey::from_str(s))
35 .collect();
36
37 let readonly: Result<Vec<Pubkey>, _> = ui_loaded_addresses
38 .readonly
39 .iter()
40 .map(|s| Pubkey::from_str(s))
41 .collect();
42
43 Ok(Self {
44 writable: writable?,
45 readonly: readonly?,
46 })
47 }
48}
49
50impl From<LoadedAddresses> for solana_message::v0::LoadedAddresses {
51 fn from(addresses: LoadedAddresses) -> Self {
52 Self {
53 writable: addresses.writable,
54 readonly: addresses.readonly,
55 }
56 }
57}