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
impl Value
Sourcepub fn validate(&self, schema: &Schema) -> bool
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.
Sourcepub fn validate_schemata(&self, schemata: &[&Schema]) -> bool
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.
Sourcepub fn validate_with_names<S: Borrow<Schema> + Debug>(
&self,
schema: &Schema,
names: &HashMap<Name, S>,
) -> bool
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.
Sourcepub fn resolve(self, schema: &Schema) -> AvroResult<Self>
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.
Sourcepub fn resolve_schemata(
self,
schema: &Schema,
schemata: Vec<&Schema>,
) -> AvroResult<Self>
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.
Sourcepub fn resolve_with_names<S: Borrow<Schema> + Debug>(
self,
schema: &Schema,
names: &HashMap<Name, S>,
) -> AvroResult<Self>
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
}