Skip to content

Instantly share code, notes, and snippets.

@esemeniuc
Created August 18, 2025 21:38
Show Gist options
  • Save esemeniuc/6a3d53092eb9981587c86efb76bc534d to your computer and use it in GitHub Desktop.
Save esemeniuc/6a3d53092eb9981587c86efb76bc534d to your computer and use it in GitHub Desktop.
Serde remote serialization
#[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