Module serialization

Module serialization 

Source
Expand description

Serialization module for converting external data formats to Lemma values.

These functions convert data from external formats (JSON, MsgPack, Protobuf) into typed LiteralValues ready for use with ExecutionPlan::with_typed_values().

The serializers are flexible about input formats while being strict about output types:

  • Text facts accept any JSON type (strings pass through, others serialize to JSON)
  • Number facts accept JSON numbers or parseable strings
  • Percentage facts accept JSON numbers or strings (with or without %)
  • Boolean facts accept JSON booleans or keyword strings
  • null values are skipped (treated as “fact not provided”)

§Example

use lemma::serialization::from_json;

let json = br#"{"discount": 21, "config": {"key": "value"}, "name": null}"#;
let values = from_json(json, &execution_plan)?;
// discount -> Percentage(21)
// config -> Text("{\"key\":\"value\"}") (if config is a text fact)
// name -> skipped (null)
let plan = execution_plan.with_typed_values(values, &limits)?;

Functions§

deserialize_fact_doc_ref_map
Custom deserializer for HashMap<FactPath, String> (document references)
deserialize_fact_path_map
Custom deserializer for HashMap<FactPath, LemmaFact>
deserialize_fact_path_set
Custom deserializer for HashSet
deserialize_fact_source_map
Custom deserializer for HashMap<FactPath, Source> (fact sources)
deserialize_fact_type_map
Custom deserializer for HashMap<FactPath, LemmaType>
deserialize_fact_value_map
Custom deserializer for HashMap<FactPath, LiteralValue>
from_json
Convert JSON values to typed Lemma values using the ExecutionPlan for type information.
from_msgpack
Convert MsgPack values to typed Lemma values using the ExecutionPlan for type information.
from_protobuf
Convert Protobuf values to typed Lemma values using the ExecutionPlan for type information.
serialize_fact_doc_ref_map
Custom serializer for HashMap<FactPath, String> (document references)
serialize_fact_path_map
Custom serializer for HashMap<FactPath, LemmaFact>
serialize_fact_path_set
Custom serializer for HashSet
serialize_fact_source_map
Custom serializer for HashMap<FactPath, Source> (fact sources)
serialize_fact_type_map
Custom serializer for HashMap<FactPath, LemmaType>
serialize_fact_value_map
Custom serializer for HashMap<FactPath, LiteralValue>
serialize_literal_value
Custom serializer for LiteralValue that outputs type and value
serialize_operation_result
Custom serializer for OperationResult