wedb_embed 0.1.2

Embedded database engine providing Redis-like APIs, built on fjall / 嵌入式数据库引擎,提供类似 Redis 的接口,底层基于 fjall 开发
Documentation
use crate::key_composer::{KeyComposer, KeyTag, SmallKey};

/// 构造有序整型元数据存储键(零堆分配栈内联)
#[inline]
pub fn meta(kc: &KeyComposer<'_>, key: &[u8]) -> SmallKey {
  kc.compose_meta_key_stack(KeyTag::SortedIntMeta.as_slice(), key)
}

/// 构造有序整型子键前缀
#[inline]
pub fn prefix(kc: &KeyComposer<'_>, key: &[u8]) -> Vec<u8> {
  kc.compose_prefix(KeyTag::SortedIntData.as_slice(), key)
}

/// 栈上定长构造有序整型子键前缀(零堆分配)
#[inline]
pub fn prefix_stack(kc: &KeyComposer<'_>, key: &[u8]) -> SmallKey {
  kc.compose_prefix_stack(KeyTag::SortedIntData.as_slice(), key)
}

/// 基于前缀字节切片构造元素存储键(零堆分配栈内联,大端序紧凑保序 8 字节)
#[inline]
pub fn item(prefix: &[u8], id: u64) -> SmallKey {
  let mut sk = SmallKey::from_slice(prefix);
  sk.extend_from_slice(&id.to_be_bytes());
  sk
}

/// 栈上定长构造有序整型数据键(零堆分配,大端序紧凑保序 8 字节)
#[inline]
pub fn key(kc: &KeyComposer<'_>, key_bytes: &[u8], id: u64) -> SmallKey {
  kc.compose_subkey_stack(
    KeyTag::SortedIntData.as_slice(),
    key_bytes,
    &id.to_be_bytes(),
  )
}