mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-08 01:52:54 +00:00
44 lines
1.0 KiB
Rust
44 lines
1.0 KiB
Rust
use crate::common::BinarySerializable;
|
|
use crate::schema::Field;
|
|
use crate::schema::Value;
|
|
use std::io;
|
|
use std::io::Read;
|
|
use std::io::Write;
|
|
|
|
/// `FieldValue` holds together a `Field` and its `Value`.
|
|
#[derive(Debug, Clone, Ord, PartialEq, Eq, PartialOrd, Serialize, Deserialize)]
|
|
pub struct FieldValue {
|
|
field: Field,
|
|
value: Value,
|
|
}
|
|
|
|
impl FieldValue {
|
|
/// Constructor
|
|
pub fn new(field: Field, value: Value) -> FieldValue {
|
|
FieldValue { field, value }
|
|
}
|
|
|
|
/// Field accessor
|
|
pub fn field(&self) -> Field {
|
|
self.field
|
|
}
|
|
|
|
/// Value accessor
|
|
pub fn value(&self) -> &Value {
|
|
&self.value
|
|
}
|
|
}
|
|
|
|
impl BinarySerializable for FieldValue {
|
|
fn serialize<W: Write>(&self, writer: &mut W) -> io::Result<()> {
|
|
self.field.serialize(writer)?;
|
|
self.value.serialize(writer)
|
|
}
|
|
|
|
fn deserialize<R: Read>(reader: &mut R) -> io::Result<Self> {
|
|
let field = Field::deserialize(reader)?;
|
|
let value = Value::deserialize(reader)?;
|
|
Ok(FieldValue::new(field, value))
|
|
}
|
|
}
|