diff --git a/src/types.rs b/src/types.rs index 8ec05ec..d9759b6 100644 --- a/src/types.rs +++ b/src/types.rs @@ -72,7 +72,7 @@ impl Weights { } } -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] pub enum DistanceThreshold { ///The distance threshold is expressed as a ratio of the total length of the text fragment under consideration, should be in range 0-1 Ratio(f32), @@ -107,7 +107,8 @@ impl FromStr for DistanceThreshold { } } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(default)] pub struct SearchParameters { /// Maximum anagram distance. The difference in characters (regardless of order) pub max_anagram_distance: DistanceThreshold, @@ -303,7 +304,7 @@ pub struct Distance { pub samecase: bool, } -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)] pub enum StopCriterion { Exhaustive, @@ -311,7 +312,7 @@ pub enum StopCriterion { StopAtExactMatch, } -#[derive(Debug, Clone, PartialEq, PartialOrd)] +#[derive(Debug, Clone, PartialEq, PartialOrd, Serialize, Deserialize)] pub enum VariantReference { ///The current item is a reference for a variant. The score expressed similarity from the ///variant to the reference. diff --git a/src/vocab.rs b/src/vocab.rs index 273850a..6f6e284 100644 --- a/src/vocab.rs +++ b/src/vocab.rs @@ -1,9 +1,10 @@ use bitflags::bitflags; +use serde::{Deserialize, Serialize}; use std::collections::HashMap; use crate::types::*; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct VocabValue { pub text: String, @@ -28,6 +29,8 @@ pub struct VocabValue { } bitflags! { + #[derive(Serialize, Deserialize)] + #[serde(transparent)] pub struct VocabType: u8 { /// Indexed for variant matching const NONE = 0b00000000; @@ -94,7 +97,7 @@ pub type VocabEncoder = HashMap; ///Frequency handling in case of duplicate items (may be across multiple lexicons), the ///associated with it. -#[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum FrequencyHandling { Sum, Max, @@ -102,7 +105,7 @@ pub enum FrequencyHandling { Replace, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct VocabParams { ///Column containing the Text (if any, 0-indexed) pub text_column: u8,