From a78fc37b2eb0b25ce24c3ae8c54f6b33739cf6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Kot?= Date: Sat, 31 Jul 2021 12:29:53 +0200 Subject: Add Format trait --- src/format.rs | 24 ++++++++++++++++++++++++ src/lib.rs | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 src/format.rs (limited to 'src') diff --git a/src/format.rs b/src/format.rs new file mode 100644 index 0000000..d2fe494 --- /dev/null +++ b/src/format.rs @@ -0,0 +1,24 @@ +use std::{collections::HashMap, error::Error}; + +use crate::value::Value; + +pub trait Format { + fn parse( + self, + uri: Option<&String>, + text: &str, + ) -> Result, Box>; +} + +impl Format for F +where + F: Fn(Option<&String>, &str) -> Result, Box> +{ + fn parse( + self, + uri: Option<&String>, + text: &str, + ) -> Result, Box> { + self(uri, text) + } +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 98c90b4..73abfe3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -57,6 +57,7 @@ mod env; mod error; mod file; mod map; +mod format; mod path; mod ser; mod source; @@ -69,6 +70,7 @@ pub use crate::env::Environment; pub use crate::error::ConfigError; pub use crate::file::{File, FileFormat, FileSourceFile, FileSourceString}; pub use crate::map::Map; +pub use crate::format::Format; pub use crate::source::AsyncSource; pub use crate::source::Source; pub use crate::value::Value; -- cgit v1.2.3