pub enum Value {
Show 56 variants
Nil,
Bool(bool),
Long(i64),
Double(f64),
BigInt(GcPtr<BigInt>),
BigDecimal(GcPtr<BigDecimal>),
Ratio(GcPtr<Ratio<BigInt>>),
Char(char),
Str(GcPtr<String>),
Uuid(u128),
Pattern(GcPtr<Regex>),
Matcher(GcPtr<Matcher>),
Symbol(GcPtr<Symbol>),
Keyword(GcPtr<Keyword>),
List(GcPtr<PersistentList>),
Vector(GcPtr<PersistentVector>),
Map(MapValue),
Set(SetValue),
Queue(GcPtr<PersistentQueue>),
TransientMap(GcPtr<TransientMap>),
TransientSet(GcPtr<TransientSet>),
TransientVector(GcPtr<TransientVector>),
IntArray(GcPtr<Mutex<Vec<i32>>>),
LongArray(GcPtr<Mutex<Vec<i64>>>),
ShortArray(GcPtr<Mutex<Vec<i16>>>),
ByteArray(GcPtr<Mutex<Vec<i8>>>),
FloatArray(GcPtr<Mutex<Vec<f32>>>),
DoubleArray(GcPtr<Mutex<Vec<f64>>>),
BooleanArray(GcPtr<Mutex<Vec<bool>>>),
CharArray(GcPtr<Mutex<Vec<char>>>),
ObjectArray(GcPtr<ObjectArray>),
NativeFunction(GcPtr<NativeFn>),
Fn(GcPtr<CljxFn>),
Macro(GcPtr<CljxFn>),
BoundFn(GcPtr<BoundFn>),
Var(GcPtr<Var>),
Atom(GcPtr<Atom>),
SharedAtom(Arc<SharedAtom>),
ByteBlob(Arc<[u8]>),
Reduced(Box<Value>),
Namespace(GcPtr<Namespace>),
LazySeq(GcPtr<LazySeq>),
Cons(GcPtr<CljxCons>),
Protocol(GcPtr<Protocol>),
ProtocolFn(GcPtr<ProtocolFn>),
MultiFn(GcPtr<MultiFn>),
Volatile(GcPtr<Volatile>),
Delay(GcPtr<Delay>),
Promise(GcPtr<CljxPromise>),
Future(GcPtr<CljxFuture>),
Agent(GcPtr<Agent>),
TypeInstance(GcPtr<TypeInstance>),
NativeObject(GcPtr<NativeObjectBox>),
Resource(ResourceHandle),
WithMeta(Box<Value>, Box<Value>),
Error(GcPtr<ExceptionInfo>),
}Expand description
The central runtime type: every Clojure value is a Value.
Small scalars (Nil, Bool, Long, Double, Char) are stored inline.
All heap-allocated types go behind GcPtr so that clone() is O(1).
Variants§
Nil
Bool(bool)
Long(i64)
Double(f64)
BigInt(GcPtr<BigInt>)
BigDecimal(GcPtr<BigDecimal>)
Ratio(GcPtr<Ratio<BigInt>>)
Char(char)
Str(GcPtr<String>)
Uuid(u128)
Pattern(GcPtr<Regex>)
Matcher(GcPtr<Matcher>)
Symbol(GcPtr<Symbol>)
Keyword(GcPtr<Keyword>)
List(GcPtr<PersistentList>)
Vector(GcPtr<PersistentVector>)
Map(MapValue)
Small maps (≤8 entries) are stored as an ArrayMap; larger ones as a HashMap. Also contains sorted map.
Set(SetValue)
Queue(GcPtr<PersistentQueue>)
TransientMap(GcPtr<TransientMap>)
TransientSet(GcPtr<TransientSet>)
TransientVector(GcPtr<TransientVector>)
IntArray(GcPtr<Mutex<Vec<i32>>>)
LongArray(GcPtr<Mutex<Vec<i64>>>)
ShortArray(GcPtr<Mutex<Vec<i16>>>)
ByteArray(GcPtr<Mutex<Vec<i8>>>)
FloatArray(GcPtr<Mutex<Vec<f32>>>)
DoubleArray(GcPtr<Mutex<Vec<f64>>>)
BooleanArray(GcPtr<Mutex<Vec<bool>>>)
CharArray(GcPtr<Mutex<Vec<char>>>)
ObjectArray(GcPtr<ObjectArray>)
NativeFunction(GcPtr<NativeFn>)
Fn(GcPtr<CljxFn>)
Macro(GcPtr<CljxFn>)
BoundFn(GcPtr<BoundFn>)
Var(GcPtr<Var>)
Atom(GcPtr<Atom>)
Cross-isolate mutable reference backed by Arc<ArcSwap<SharedValue>>.
Unlike Atom, a SharedAtom can cross the isolate boundary (the Arc
is cloned, not deep-copied) and its contents are lock-free CAS-swapped.
ByteBlob(Arc<[u8]>)
Immutable refcounted byte buffer (the BEAM off-heap-binary trick). Shared without copy across the isolate boundary; refcount drops to zero only when every isolate releases its reference.
Reduced(Box<Value>)
Namespace(GcPtr<Namespace>)
LazySeq(GcPtr<LazySeq>)
A deferred sequence cell — realized at most once.
Cons(GcPtr<CljxCons>)
A realized cons cell whose tail may itself be lazy.
Protocol(GcPtr<Protocol>)
ProtocolFn(GcPtr<ProtocolFn>)
MultiFn(GcPtr<MultiFn>)
Volatile(GcPtr<Volatile>)
Delay(GcPtr<Delay>)
Promise(GcPtr<CljxPromise>)
Future(GcPtr<CljxFuture>)
Agent(GcPtr<Agent>)
TypeInstance(GcPtr<TypeInstance>)
NativeObject(GcPtr<NativeObjectBox>)
Resource(ResourceHandle)
WithMeta(Box<Value>, Box<Value>)
A value with attached metadata. Transparent for equality, hashing, display.
Error(GcPtr<ExceptionInfo>)
Implementations§
Source§impl Value
impl Value
Sourcepub fn map_entry(key: Value, val: Value) -> Self
pub fn map_entry(key: Value, val: Value) -> Self
Convenience: build a [key val] map entry (a tagged 2-element vector).
Sourcepub fn is_map_entry(&self) -> bool
pub fn is_map_entry(&self) -> bool
True only for map entries ([k v] pairs from seq’ing a map, find,
or the map-entry constructor) — not for plain 2-element vectors.
Sourcepub fn is_sequential(&self) -> bool
pub fn is_sequential(&self) -> bool
True for sequential collections (list, vector, lazy seq, cons).
Trait Implementations§
Source§impl ClojureHash for Value
impl ClojureHash for Value
fn clojure_hash(&self) -> u32
impl Eq for Value
Source§impl FromIterator<Value> for PersistentHashSet
impl FromIterator<Value> for PersistentHashSet
Source§impl FromIterator<Value> for PersistentList
impl FromIterator<Value> for PersistentList
Source§impl FromIterator<Value> for SortedSet
impl FromIterator<Value> for SortedSet
Source§impl FromIterator<Value> for PersistentVector
impl FromIterator<Value> for PersistentVector
Source§impl Ord for Value
impl Ord for Value
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Auto Trait Implementations§
impl !RefUnwindSafe for Value
impl !Send for Value
impl !Sync for Value
impl !UnwindSafe for Value
impl Freeze for Value
impl Unpin for Value
impl UnsafeUnpin for Value
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more