Skip to main content

Crate datacard_rs

Crate datacard_rs 

Source
Expand description

§DataCard: Generic Binary Card Format Library

DataCard provides a generic binary card format for storing payloads with self-describing metadata and optional CRC32 checksums.

§Generic Card System

Implementors define their own card formats by implementing CardFormat:

use datacard_rs::{CardFormat, GenericCard, CardError};

pub struct TernsigFormat;

impl CardFormat for TernsigFormat {
    const MAGIC: [u8; 4] = *b"TERN";
    const VERSION_MAJOR: u8 = 1;
    const VERSION_MINOR: u8 = 0;

    fn format_name() -> &'static str { "Ternsig" }
}

// Create and use cards
let card: GenericCard<TernsigFormat> = GenericCard::new("program", payload);
card.save("program.card")?;

let loaded: GenericCard<TernsigFormat> = GenericCard::load("program.card")?;

§Format Structure

┌────────────────────────────────┐
│ Header (8 bytes)               │
│   - Magic (4 bytes)            │
│   - Version (2 bytes)          │
│   - Flags (2 bytes)            │
├────────────────────────────────┤
│ Metadata (JSON, length-prefix) │
├────────────────────────────────┤
│ Payload (raw bytes)            │
├────────────────────────────────┤
│ Footer (4 bytes, optional)     │
│   - CRC32 checksum             │
└────────────────────────────────┘

Modules§

checksum
CRC32 checksum utilities for DataCard

Structs§

CardDeprecated
A DataCard: BytePunch-compressed CML document with metadata
CardHeader
Card file header (8 bytes)
CardMetadataDeprecated
Card metadata (stored as JSON)
GenericCard
Generic card that works with any CardFormat
GenericHeader
Generic card header (8 bytes)
GenericMetadata
Generic card metadata (JSON-serializable)

Enums§

CardError
Error types for DataCard operations

Constants§

FLAG_HAS_CHECKSUM
Flag: Card has CRC32 checksum in footer
FLAG_HAS_TIMESTAMP
Flag: Metadata includes timestamp
MAGIC
Magic bytes for card files (“CARD”)
VERSION_MAJOR
Current major version
VERSION_MINOR
Current minor version

Traits§

CardFormat
Trait for defining card formats

Type Aliases§

Result