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