//! The available formats to convert use super::*; use std::io; use object::Object; /// Config for the encode/decode pub struct Config; /// A directive for a format on how to encode and decode objects. #[derive(Clone, Copy)] pub struct FormatDirective { encode: fn (&Config, &mut dyn io::Write, &Object) -> io::Result, decode: fn (&Config, &mut dyn io::Read) -> io::Result<(Object, usize)>, } macro_rules! directive { ($($name:literal),+ => $encode:expr, $decode:expr) => { (&[$($name),+], FormatDirective { encode: $encode, decode: $decode, }) }; } /// All format directives and their name(s) pub static FORMATS: &[(&'static [&'static str], FormatDirective)] = &[ directive!("json", "js", "javascript" => |_, _, _| todo!(), |_, _| todo!()), directive!("s-expression", "sexpr", "lisp", "lexpr" => |_, _, _| todo!(), |_, _| todo!()), directive!("cbor" => |_, _, _| todo!(), |_, _| todo!()), ];