Skip to main content

FieldValue

Enum FieldValue 

Source
pub enum FieldValue {
    Str(String),
    Int(i64),
    Float(f64),
    Bool(bool),
    List(Vec<Self>),
    Variant {
        arm_index: usize,
        value: Box<Self>,
    },
    Object(BTreeMap<String, Self>),
    Media(MediaValue),
    Null,
}
Expand description

A typed value extracted from an LM completion or supplied as input.

Mirrors FieldType but holds actual data. Produced by adapter parsing.

§Serde behavior

Uses #[serde(untagged)] — serde tries variants in declaration order during deserialization. This means JSON 42 deserializes as Int(42) (not Float), 3.14 as Float(3.14), true as Bool(true), etc. This ordering is intentional and deterministic: whole numbers become Int, decimal numbers become Float. Do not reorder variants without considering the serde impact.

The Media variant is tagged via its inner MediaValue struct (which carries an explicit kind discriminator) rather than the untagged numeric/string variants. Serde tries each untagged variant in order, and MediaValue’s struct shape is unambiguous against the scalar variants.

The Variant arm is placed before Object so its specific {arm_index, value} shape matches first. The narrow consequence: a real Object whose declared fields are exactly {arm_index: <non-negative int>, value: <any>} (and nothing else) cannot round-trip through serde-untagged — it would be parsed as Variant. No production schema uses these field names, so the ambiguity is theoretical, but consumers persisting custom shapes should avoid this exact field pair.

Variants§

§

Str(String)

A string value.

§

Int(i64)

An integer value.

§

Float(f64)

A floating-point value.

§

Bool(bool)

A boolean value.

§

List(Vec<Self>)

A list of values.

§

Variant

A matched arm of a OneOf or AnyOf field. arm_index is the zero-based position of the matched arm in the owning FieldType’s arms vector; consumers can switch on it without re-running arm validation.

Fields

§arm_index: usize

Zero-based index of the matched arm in the owning FieldType’s arms vector.

§value: Box<Self>

The inner value produced by the matched arm’s deserializer.

§

Object(BTreeMap<String, Self>)

A structured object with named fields.

§

Media(MediaValue)

A media reference (image / document / audio / video).

§

Null

A null value (from a nullable field).

Trait Implementations§

Source§

impl Clone for FieldValue

Source§

fn clone(&self) -> FieldValue

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FieldValue

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for FieldValue

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for FieldValue

Source§

fn eq(&self, other: &FieldValue) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for FieldValue

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for FieldValue

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more