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§
- Card
Deprecated - A DataCard: BytePunch-compressed CML document with metadata
- Card
Header - Card file header (8 bytes)
- Card
Metadata Deprecated - Card metadata (stored as JSON)
- Generic
Card - Generic card that works with any CardFormat
- Generic
Header - Generic card header (8 bytes)
- Generic
Metadata - Generic card metadata (JSON-serializable)
Enums§
- Card
Error - 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§
- Card
Format - Trait for defining card formats