Skip to main content

Value

Enum Value 

Source
pub enum Value {
Show 27 variants Null, Boolean(bool), Int(i32), Long(i64), Float(f32), Double(f64), Bytes(Vec<u8>), String(String), Fixed(usize, Vec<u8>), Enum(u32, String), Union(u32, Box<Value>), Array(Vec<Value>), Map(HashMap<String, Value>), Record(Vec<(String, Value)>), Date(i32), Decimal(Decimal), BigDecimal(BigDecimal), TimeMillis(i32), TimeMicros(i64), TimestampMillis(i64), TimestampMicros(i64), TimestampNanos(i64), LocalTimestampMillis(i64), LocalTimestampMicros(i64), LocalTimestampNanos(i64), Duration(Duration), Uuid(Uuid),
}
Expand description

A valid Avro value.

More information about Avro values can be found in the Avro Specification

Variants§

§

Null

A null Avro value.

§

Boolean(bool)

A boolean Avro value.

§

Int(i32)

A int Avro value.

§

Long(i64)

A long Avro value.

§

Float(f32)

A float Avro value.

§

Double(f64)

A double Avro value.

§

Bytes(Vec<u8>)

A bytes Avro value.

§

String(String)

A string Avro value.

§

Fixed(usize, Vec<u8>)

A fixed Avro value. The size of the fixed value is represented as a usize.

§

Enum(u32, String)

An enum Avro value.

An Enum is represented by a symbol and its position in the symbols list of its corresponding schema. This allows schema-less encoding, as well as schema resolution while reading values.

§

Union(u32, Box<Value>)

An union Avro value.

A Union is represented by the value it holds and its position in the type list of its corresponding schema This allows schema-less encoding, as well as schema resolution while reading values.

§

Array(Vec<Value>)

An array Avro value.

§

Map(HashMap<String, Value>)

A map Avro value.

§

Record(Vec<(String, Value)>)

A record Avro value.

A Record is represented by a vector of (<record name>, value). This allows schema-less encoding.

See Record for a more user-friendly support.

§

Date(i32)

A date value.

Serialized and deserialized as i32 directly. Can only be deserialized properly with a schema.

§

Decimal(Decimal)

An Avro Decimal value. Bytes are in big-endian order, per the Avro spec.

§

BigDecimal(BigDecimal)

An Avro Decimal value.

§

TimeMillis(i32)

Time in milliseconds.

§

TimeMicros(i64)

Time in microseconds.

§

TimestampMillis(i64)

Timestamp in milliseconds.

§

TimestampMicros(i64)

Timestamp in microseconds.

§

TimestampNanos(i64)

Timestamp in nanoseconds.

§

LocalTimestampMillis(i64)

Local timestamp in milliseconds.

§

LocalTimestampMicros(i64)

Local timestamp in microseconds.

§

LocalTimestampNanos(i64)

Local timestamp in nanoseconds.

§

Duration(Duration)

Avro Duration. An amount of time defined by months, days and milliseconds.

§

Uuid(Uuid)

Universally unique identifier.

Implementations§

Source§

impl Value

Source

pub fn validate(&self, schema: &Schema) -> bool

Validate the value against the given Schema.

Note: This will first build a reference map from the schema (see ResolvedSchema). If this function is called more than once for the same schema, it is recommended to use validate_with_names instead.

See the Avro specification for the full set of rules of schema validation.

§Panics

Will panic if the schema contain unresolved references or duplicate named types.

Source

pub fn validate_schemata(&self, schemata: &[&Schema]) -> bool

Validate the value against the given schemata.

Note: This will first build a reference map from the schema (see ResolvedSchema). If this function is called more than once for the same schema, it is recommended to use validate_with_names instead.

See the Avro specification for the full set of rules of schema validation.

§Panics

Will panic if the schemata contain unresolved references or duplicate schemas.

Source

pub fn validate_with_names<S: Borrow<Schema> + Debug>( &self, schema: &Schema, names: &HashMap<Name, S>, ) -> bool

Validate the value against the given schema using names to resolve any references.

See the Avro specification for the full set of rules of schema validation.

Source

pub fn resolve(self, schema: &Schema) -> AvroResult<Self>

Resolve this value into a new schema.

Note: This will first build a reference map from the schema (see ResolvedSchema). If this function is called more than once for the same schema, it is recommended to use resolve_with_names instead.

See Schema Resolution in the Avro specification for the full set of rules of schema resolution.

Source

pub fn resolve_schemata( self, schema: &Schema, schemata: Vec<&Schema>, ) -> AvroResult<Self>

Resolve this value into a new schema using schemata to resolve any references.

schemata must contain all referenced schemas in schema, including references to parts of schema itself.

Note: This will first build a reference map from the schema (see ResolvedSchema). If this function is called more than once for the same schema, it is recommended to use resolve_with_names instead.

See Schema Resolution in the Avro specification for the full set of rules of schema resolution.

Source

pub fn resolve_with_names<S: Borrow<Schema> + Debug>( self, schema: &Schema, names: &HashMap<Name, S>, ) -> AvroResult<Self>

Resolve this value into a new schema using names to resolve any references.

See Schema Resolution in the Avro specification for the full set of rules of schema resolution.

§Example
let resolved_schema = ResolvedSchema::new(&schema)?;

for value in values {
    let resolved = value.resolve_with_names(&schema, resolved_schema.get_names())?;
    // Do something with the resolved value
}

Trait Implementations§

Source§

impl Clone for Value

Source§

fn clone(&self) -> Value

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 Value

Source§

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

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

impl<'_enum> From<&'_enum Value> for ValueKind

Source§

fn from(val: &'_enum Value) -> ValueKind

Converts to this type from the input type.
Source§

impl From<&Value> for SchemaKind

Source§

fn from(value: &Value) -> Self

Converts to this type from the input type.
Source§

impl From<&[u8]> for Value

Source§

fn from(value: &[u8]) -> Self

Converts to this type from the input type.
Source§

impl From<&str> for Value

Source§

fn from(value: &str) -> Self

Converts to this type from the input type.
Source§

impl From<()> for Value

Source§

fn from(_: ()) -> Self

Converts to this type from the input type.
Source§

impl From<BigDecimal> for Value

Source§

fn from(value: BigDecimal) -> Self

Converts to this type from the input type.
Source§

impl From<Codec> for Value

Source§

fn from(value: Codec) -> Self

Converts to this type from the input type.
Source§

impl From<Decimal> for Value

Source§

fn from(value: Decimal) -> Self

Converts to this type from the input type.
Source§

impl From<Duration> for Value

Source§

fn from(value: Duration) -> Self

Converts to this type from the input type.
Source§

impl<K, V, S> From<HashMap<K, V, S>> for Value
where K: Into<String>, V: Into<Self>, S: BuildHasher,

Source§

fn from(value: HashMap<K, V, S>) -> Self

Converts to this type from the input type.
Source§

impl<T> From<Option<T>> for Value
where T: Into<Self>,

Source§

fn from(value: Option<T>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<Record<'a>> for Value

Source§

fn from(value: Record<'a>) -> Self

Converts to this type from the input type.
Source§

impl From<String> for Value

Source§

fn from(value: String) -> Self

Converts to this type from the input type.
Source§

impl From<Uuid> for Value

Source§

fn from(value: Uuid) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for ValueKind

Source§

fn from(val: Value) -> ValueKind

Converts to this type from the input type.
Source§

impl From<Vec<u8>> for Value

Source§

fn from(value: Vec<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<bool> for Value

Source§

fn from(value: bool) -> Self

Converts to this type from the input type.
Source§

impl From<f32> for Value

Source§

fn from(value: f32) -> Self

Converts to this type from the input type.
Source§

impl From<f64> for Value

Source§

fn from(value: f64) -> Self

Converts to this type from the input type.
Source§

impl From<i32> for Value

Source§

fn from(value: i32) -> Self

Converts to this type from the input type.
Source§

impl From<i64> for Value

Source§

fn from(value: i64) -> Self

Converts to this type from the input type.
Source§

impl IntoDiscriminant for Value

Source§

type Discriminant = ValueKind

Enum listing the same variants as this enum but without any data fields
Source§

fn discriminant(&self) -> Self::Discriminant

Source§

impl PartialEq for Value

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Value

Source§

impl TryFrom<Value> for Value

Source§

type Error = Error

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

fn try_from(value: JsonValue) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<Value> for Value

Convert Avro values to Json values

Source§

type Error = Error

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

fn try_from(value: Value) -> AvroResult<Self>

Performs the conversion.
Source§

impl TryFrom<usize> for Value

Source§

type Error = Error

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

fn try_from(value: usize) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl Freeze for Value

§

impl RefUnwindSafe for Value

§

impl Send for Value

§

impl Sync for Value

§

impl Unpin for Value

§

impl UnsafeUnpin for Value

§

impl UnwindSafe for Value

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
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.