pub struct NanValue(/* private fields */);Implementations§
Source§impl NanValue
impl NanValue
pub const FALSE: NanValue
pub const TRUE: NanValue
pub const UNIT: NanValue
pub const NONE: NanValue
pub const EMPTY_LIST: NanValue
pub const EMPTY_MAP: NanValue
pub const EMPTY_VECTOR: NanValue
pub const EMPTY_STRING: NanValue
pub fn encode(tag: u64, payload: u64) -> NanValue
pub fn is_nan_boxed(self) -> bool
pub fn tag(self) -> u64
pub fn payload(self) -> u64
pub fn new_float(f: f64) -> NanValue
pub fn as_float(self) -> f64
pub fn new_int_inline(i: i64) -> NanValue
pub fn new_int_arena(arena_index: u32) -> NanValue
pub fn new_int<T>(i: i64, arena: &mut Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn as_int<T>(self, arena: &Arena<T>) -> i64where
T: ArenaTypes,
pub fn inline_int_payload(self) -> Option<u64>
pub fn inline_int_value(self) -> Option<i64>
pub fn new_bool(b: bool) -> NanValue
pub fn as_bool(self) -> bool
pub fn plain_immediate_payload(self) -> Option<u64>
pub fn wrapper_kind(self) -> u64
pub fn wrapper_inline_inner(self) -> Option<NanValue>
pub fn wrapper_parts<T>(self, arena: &Arena<T>) -> Option<(u64, NanValue)>where
T: ArenaTypes,
pub fn new_some(inner_index: u32) -> NanValue
pub fn new_ok(inner_index: u32) -> NanValue
pub fn new_err(inner_index: u32) -> NanValue
pub fn wrapper_index(self) -> u32
pub fn wrapper_inner<T>(self, arena: &Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn new_some_value<T>(inner: NanValue, arena: &mut Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn new_ok_value<T>(inner: NanValue, arena: &mut Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn new_err_value<T>(inner: NanValue, arena: &mut Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn new_string(arena_index: u32) -> NanValue
pub fn small_string(self) -> Option<NanString<'static>>
pub fn new_string_value<T>(s: &str, arena: &mut Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn new_list(arena_index: u32) -> NanValue
pub fn new_tuple(arena_index: u32) -> NanValue
pub fn new_map(arena_index: u32) -> NanValue
pub fn new_vector(arena_index: u32) -> NanValue
pub fn new_record(arena_index: u32) -> NanValue
pub fn new_variant(arena_index: u32) -> NanValue
pub fn symbol_kind(self) -> u64
pub fn symbol_index(self) -> u32
pub fn new_nullary_variant(symbol_index: u32) -> NanValue
pub fn try_new_inline_variant(ctor_id: u32, inner: NanValue) -> Option<NanValue>
pub fn inline_variant_ctor_id(self) -> u32
pub fn inline_variant_inner(self) -> NanValue
pub fn new_fn(arena_index: u32) -> NanValue
pub fn new_builtin(arena_index: u32) -> NanValue
pub fn new_namespace(arena_index: u32) -> NanValue
pub fn arena_index(self) -> u32
pub fn heap_index(self) -> Option<u32>
pub fn with_heap_index(self, index: u32) -> NanValue
pub fn is_float(self) -> bool
pub fn is_int(self) -> bool
pub fn is_bool(self) -> bool
pub fn is_unit(self) -> bool
pub fn is_none(self) -> bool
pub fn is_some(self) -> bool
pub fn is_ok(self) -> bool
pub fn is_err(self) -> bool
pub fn is_string(self) -> bool
pub fn string_eq<T>(self, other: NanValue, arena: &Arena<T>) -> boolwhere
T: ArenaTypes,
pub fn is_list(self) -> bool
pub fn is_record(self) -> bool
pub fn is_fn(self) -> bool
pub fn is_variant(self) -> bool
pub fn is_inline_variant(self) -> bool
pub fn is_map(self) -> bool
pub fn is_vector(self) -> bool
pub fn is_empty_vector_immediate(self) -> bool
pub fn is_tuple(self) -> bool
pub fn is_builtin(self) -> bool
pub fn is_namespace(self) -> bool
pub fn is_empty_list_immediate(self) -> bool
pub fn is_empty_map_immediate(self) -> bool
pub fn type_name(self) -> &'static str
pub fn variant_ctor_id<T>(self, arena: &Arena<T>) -> Option<u32>where
T: ArenaTypes,
pub fn variant_parts<T>(
self,
arena: &Arena<T>,
) -> Option<(u32, u16, &[NanValue])>where
T: ArenaTypes,
pub fn variant_single_field<T>(self, arena: &Arena<T>) -> NanValuewhere
T: ArenaTypes,
pub fn inline_variant_info<T>(
self,
arena: &Arena<T>,
) -> Option<(u32, u16, NanValue)>where
T: ArenaTypes,
pub fn bits(self) -> u64
pub fn from_bits(bits: u64) -> NanValue
pub fn map_key_hash<T>(self, arena: &Arena<T>) -> u64where
T: ArenaTypes,
Sourcepub fn map_key_hash_deep<T>(self, arena: &Arena<T>) -> u64where
T: ArenaTypes,
pub fn map_key_hash_deep<T>(self, arena: &Arena<T>) -> u64where
T: ArenaTypes,
Structural hash that respects eq_in for every value shape:
two equal heap values (variants/tuples/records/lists/etc.) always
produce the same u64 regardless of arena layout. Used by Map
when the key type is anything beyond inline scalars.
Source§impl NanValue
impl NanValue
pub fn eq_in<T>(self, other: NanValue, arena: &Arena<T>) -> boolwhere
T: ArenaTypes,
pub fn hash_in<T, H>(self, state: &mut H, arena: &Arena<T>)where
T: ArenaTypes,
H: Hasher,
pub fn repr<T>(self, arena: &Arena<T>) -> Stringwhere
T: ArenaTypes,
pub fn display<T>(self, arena: &Arena<T>) -> Option<String>where
T: ArenaTypes,
Trait Implementations§
Source§impl NanValueConvert for NanValue
impl NanValueConvert for NanValue
impl Copy for NanValue
Auto Trait Implementations§
impl Freeze for NanValue
impl RefUnwindSafe for NanValue
impl Send for NanValue
impl Sync for NanValue
impl Unpin for NanValue
impl UnsafeUnpin for NanValue
impl UnwindSafe for NanValue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more