use proc_macro2::TokenStream as TokenStream2;
use syn::{Path, parse_str};
use crate::derive::config::EnumBitsetConfig;
mod array;
mod map;
pub struct SerdeConfig {
pub ser: bool,
pub de: bool,
pub serde_crate: Path,
pub mode: SerdeMode,
}
pub enum SerdeMode {
Array,
Map,
}
impl Default for SerdeConfig {
fn default() -> Self {
SerdeConfig {
ser: true,
de: true,
serde_crate: parse_str("::serde").expect("::serde is a valid path"),
mode: SerdeMode::Array,
}
}
}
#[allow(dead_code)]
impl EnumBitsetConfig {
#[cfg(feature = "serde")]
pub fn impl_serde(&self) -> TokenStream2 {
match self.serde.mode {
SerdeMode::Array => self.impl_serde_list(),
SerdeMode::Map => self.impl_serde_map(),
}
}
}