use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum RerankStorageKind {
F32,
}
impl RerankStorageKind {
#[inline]
pub const fn bytes_per_element(self) -> usize {
match self {
Self::F32 => 4,
}
}
#[inline]
pub const fn tag(self) -> u16 {
match self {
Self::F32 => 1,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn f32_bytes_per_element_matches_ieee754() {
assert_eq!(RerankStorageKind::F32.bytes_per_element(), 4);
}
#[test]
fn f32_tag_is_one() {
assert_eq!(RerankStorageKind::F32.tag(), 1);
}
#[test]
fn serde_roundtrip_preserves_variant() {
let kind = RerankStorageKind::F32;
let json = serde_json::to_string(&kind).expect("serialize");
let back: RerankStorageKind = serde_json::from_str(&json).expect("deserialize");
assert_eq!(back, kind);
}
}