sized_data_derive

Crates.iosized_data_derive
lib.rssized_data_derive
version0.1.1
created_at2025-01-29 20:53:07.547007+00
updated_at2025-01-29 21:06:00.662046+00
descriptionSized data macro implementation for use in Anchor framework.
homepagehttps://github.com/simke9445/sized-data-derive
repositoryhttps://github.com/simke9445/sized-data-derive
max_upload_size
id1535405
size7,364
(simke9445)

documentation

https://docs.rs/sized-data-derive

README

sized-data-derive

Procedural macro implementation for sized-data crate, used with Solana's Anchor framework.

Implementation

Automatically derives the SizedData trait for structs by:

  1. Analyzing struct fields at compile time
  2. Generating size calculation code for each field
  3. Producing a total size implementation
#[derive(SizedData)]
pub struct UserAccount {
    pub authority: Pubkey,    // 32 bytes
    pub counter: u64,         // 8 bytes
}

// Generates:
impl SizedData for UserAccount {
    fn size() -> usize {
        <Pubkey as SizedData>::size() + 
        <u64 as SizedData>::size()
    }
}

Supported Field Types

  • Named fields (struct Example { field: Type })
  • Unnamed fields (struct Example(Type))
  • Unit structs (struct Example;)

Requirements

  • Rust 1.83.0+
  • quote = "1.0"
  • syn = { version = "1.0", features = ["full"] }

Usage

This crate is typically used as a dependency of sized-data. Direct usage:

[dependencies]
sized_data_derive = "0.1.1"
use sized_data_derive::SizedData;

License

MIT License

Commit count: 7

cargo fmt