compact_str 0.6.1

A memory efficient string type that transparently stores strings on the stack, when possible
Documentation
use super::{
    HEAP_MASK,
    PADDING_SIZE,
};

#[derive(Debug, Copy, Clone)]
pub enum Discriminant {
    Heap,
    Inline,
}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DiscriminantMask {
    _padding: [u8; PADDING_SIZE],
    val: u8,
}

impl DiscriminantMask {
    #[inline(always)]
    pub const fn discriminant(&self) -> Discriminant {
        if self.val == u8::MAX {
            panic!("Discriminant was invalid value reserved for Option::None!")
        } else if self.val == HEAP_MASK {
            Discriminant::Heap
        } else {
            Discriminant::Inline
        }
    }
}

crate::asserts::assert_size_eq!(DiscriminantMask, String);