solana_data_structs 0.2.0

Data structures optimized for usage in on-chain Solana programs.
Documentation
use borsh::{BorshDeserialize, BorshSerialize};
use rkyv::{Archive, Deserialize, Serialize};

#[derive(Clone, Debug, Archive, Deserialize, Serialize, BorshSerialize, BorshDeserialize)]
pub struct GraphEdge<E> {
    pub data: E,
    pub node: usize,
}

impl<E> GraphEdge<E> {
    pub fn new(data: E, node: usize) -> Self {
        Self { data, node }
    }
}

#[derive(Clone, Debug, Archive, Deserialize, Serialize, BorshSerialize, BorshDeserialize)]
pub struct GraphNode<D, E> {
    pub data: D,
    pub edges: Vec<GraphEdge<E>>,
}

impl<D, E> GraphNode<D, E> {
    pub fn new(data: D) -> Self {
        Self {
            data,
            edges: Vec::new(),
        }
    }
}