Created
August 18, 2025 21:38
-
-
Save esemeniuc/6a3d53092eb9981587c86efb76bc534d to your computer and use it in GitHub Desktop.
Serde remote serialization
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[derive(Serialize, Deserialize)] | |
#[serde(remote = "solana_sdk::address_lookup_table::AddressLookupTableAccount")] | |
struct AddressLookupTableAccountSerde { | |
key: Pubkey, | |
addresses: Vec<Pubkey>, | |
} | |
#[derive(Serialize, Deserialize)] | |
struct AddressLookupTableAccountDump( | |
#[serde(with = "AddressLookupTableAccountSerde")] pub AddressLookupTableAccount, | |
); | |
#[derive(Serialize, Deserialize)] | |
struct AddressLookupTableAccountDump2(pub Vec<AddressLookupTableAccountDump>); | |
pub async fn fetch_all( | |
&mut self, | |
) -> ARedisResult<impl ExactSizeIterator<Item = AddressLookupTableAccount>> { | |
let bytes = self.bytes_conn.get::<_, Vec<u8>>(&self.bytes_key).await?; | |
let accounts = bincode::deserialize::<Vec<AddressLookupTableAccountDump2>>(&bytes) | |
.map_err(ARedisClientError::BincodeDeserializationError)?; | |
let mut vec2 = vec![]; | |
let mut deser = bincode::Deserializer::from_slice(&mut vec2, bincode::options()); | |
let de = AddressLookupTableAccountSerde::deserialize(&mut deser); | |
let de2 = AddressLookupTableAccountSerde::deserialize(&mut deser); | |
// Ok(accounts.wall_time.into_iter()) | |
Ok(vec![].into_iter()) | |
} | |
Remote example: | |
let mut lut_account = AddressLookupTableAccount { | |
key: Pubkey::new_unique(), | |
addresses: vec![Pubkey::new_unique()], | |
}; | |
let mut vec1 = vec![]; | |
let mut ser = bincode::Serializer::new(&mut vec1, bincode::options()); | |
let ser = AddressLookupTableAccountSerde::serialize(&lut_account, &mut ser); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment