neo_solidity/
storage_opt.rs

1//! Storage Layout Optimization
2//!
3//! Optimizes storage variable layout for gas efficiency.
4
5/// Storage slot info
6#[derive(Debug, Clone)]
7pub struct StorageSlot {
8    pub slot: u64,
9    pub offset: u8,
10    pub size: u8,
11}
12
13/// Pack variables into storage slots
14pub fn pack_variables(sizes: &[u8]) -> Vec<StorageSlot> {
15    let mut result = Vec::new();
16    let mut slot = 0u64;
17    let mut offset = 0u8;
18
19    for &size in sizes {
20        if offset + size > 32 {
21            slot += 1;
22            offset = 0;
23        }
24        result.push(StorageSlot { slot, offset, size });
25        offset += size;
26    }
27    result
28}