Expand description
§peat-lite
Lightweight CRDT primitives for resource-constrained Peat nodes.
This crate provides bounded, no_std-compatible data structures suitable
for devices with limited memory (256KB RAM budget), such as:
- WearTAK on Samsung watches
- ESP32 sensor nodes
- LoRa mesh devices
§Features
std(default): Enables standard library supportandroid: Enables UniFFI bindings for Android/Kotlin- Disable default features for
no_std:--no-default-features
§Primitives
| Type | Purpose | Memory |
|---|---|---|
NodeId | 32-bit node identifier | 4 bytes |
CannedMessage | Predefined message codes | 1 byte |
CannedMessageEvent | Message with metadata | ~24 bytes |
LwwRegister | Last-writer-wins register | sizeof(T) + 12 bytes |
GCounter | Grow-only distributed counter | 4 bytes per node |
§Example
use peat_lite::{NodeId, CannedMessage, CannedMessageEvent};
let my_node = NodeId::new(0x12345678);
let event = CannedMessageEvent::new(
CannedMessage::Ack,
my_node,
Some(NodeId::new(0xDEADBEEF)), // target
1706234567000, // timestamp ms
);
// Encode for transmission
let bytes = event.encode();
assert_eq!(bytes[0], 0xAF); // CannedMessage markerRe-exports§
pub use canned::CannedMessage;pub use canned::CannedMessageAckEvent;pub use canned::CannedMessageEvent;pub use canned::CannedMessageStore;pub use canned::MAX_CANNED_ACKS;pub use counter::GCounter;pub use lww::LwwRegister;pub use node_id::NodeId;pub use wire::WireError;pub use wire::CANNED_ACK_EVENT_MAX_SIZE;pub use wire::CANNED_MESSAGE_MARKER;pub use wire::CANNED_MESSAGE_SIGNED_SIZE;pub use wire::CANNED_MESSAGE_UNSIGNED_SIZE;pub use wire::SIGNATURE_SIZE;pub use protocol::ota;pub use protocol::append_ttl;pub use protocol::decode_header;pub use protocol::default_ttl_for_crdt;pub use protocol::encode_header;pub use protocol::strip_ttl;pub use protocol::CrdtType;pub use protocol::Header;pub use protocol::MessageError;pub use protocol::MessageType;pub use protocol::NodeCapabilities;pub use protocol::constants::*;