Compressible

Derive Macro Compressible 

Source
#[derive(Compressible)]
{
    // Attributes available to this derive:
    #[compress_as]
    #[light_seeds]
}
Expand description

Automatically implements all required traits for compressible accounts.

This derive macro generates HasCompressionInfo, Size, and CompressAs trait implementations. It supports optional compress_as attribute for custom compression behavior.

§Example - Basic Usage

use light_sdk_macros::Compressible;
use light_compressible::CompressionInfo;
use solana_pubkey::Pubkey;

#[derive(Compressible)]
pub struct UserRecord {
    pub compression_info: Option<CompressionInfo>,
    pub owner: Pubkey,
    pub name: String,
    pub score: u64,
}

§Example - Custom Compression

use light_sdk_macros::Compressible;
use light_compressible::CompressionInfo;
use solana_pubkey::Pubkey;

#[derive(Compressible)]
#[compress_as(start_time = 0, end_time = None, score = 0)]
pub struct GameSession {
    pub compression_info: Option<CompressionInfo>,
    pub session_id: u64,        // KEPT
    pub player: Pubkey,         // KEPT  
    pub game_type: String,      // KEPT
    pub start_time: u64,        // RESET to 0
    pub end_time: Option<u64>,  // RESET to None
    pub score: u64,             // RESET to 0
}