mmap_struct

Attribute Macro mmap_struct 

Source
#[mmap_struct]
Expand description

Attribute macro for memory-mapped structs.

This macro transforms regular Rust types into mmap-safe types and generates the necessary trait implementation. Users write normal Rust code:

§Example

use memmap3::mmap_struct;
use memmap3::MmapStruct;
use std::sync::atomic::Ordering;

#[mmap_struct]
struct Config {
    // Regular field
    version: u32,
     
    // Atomic field - transformed to MmapAtomicU64
    #[mmap(atomic)]
    connection_count: u64,
     
    // String field - auto-detected! [u8; N] defaults to string
    server_name: [u8; 256],
     
    // Raw binary data - use #[mmap(raw)] to keep as byte array
    #[mmap(raw)]
    binary_data: [u8; 128],
}

// Usage:
let mut config = MmapStruct::<Config>::create("/tmp/config.mmap")?;
config.version = 1;
config.connection_count.fetch_add(1, Ordering::SeqCst);
config.server_name.set("localhost");  // Auto-detected as string!
config.binary_data[0] = 0xFF;  // Raw binary access

§Features

  • Automatically adds #[repr(C)] for memory layout compatibility
  • Transforms u64 with #[mmap(atomic)] to MmapAtomicU64
  • Auto-detects [u8; N] as MmapString<N> (use #[mmap(raw)] for binary)
  • Generates StructLayout implementation