solana_config_interface/
state.rs

1use solana_pubkey::Pubkey;
2#[cfg(feature = "serde")]
3use {
4    serde_derive::{Deserialize, Serialize},
5    solana_short_vec as short_vec,
6};
7
8/// A collection of keys to be stored in Config account data.
9#[derive(Debug, Default)]
10#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
11pub struct ConfigKeys {
12    // Each key tuple comprises a unique `Pubkey` identifier,
13    // and `bool` whether that key is a signer of the data
14    #[cfg_attr(feature = "serde", serde(with = "short_vec"))]
15    pub keys: Vec<(Pubkey, bool)>,
16}
17
18/// Utility for extracting the `ConfigKeys` data from the account data.
19#[cfg(feature = "bincode")]
20pub fn get_config_data(bytes: &[u8]) -> Result<&[u8], bincode::Error> {
21    bincode::deserialize::<ConfigKeys>(bytes)
22        .and_then(|keys| bincode::serialized_size(&keys))
23        .map(|offset| &bytes[offset as usize..])
24}