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}