summaryrefslogtreecommitdiffstats
path: root/src/config.rs
diff options
context:
space:
mode:
authorRyan Leckey <leckey.ryan@gmail.com>2018-07-02 15:06:21 -0700
committerRyan Leckey <leckey.ryan@gmail.com>2018-07-02 15:06:21 -0700
commitb8a1d8a65defb08c501df83b464a55f270765876 (patch)
tree3668b5983885018401d48e2b4d233ab678f71f8a /src/config.rs
parente5a8323544ec98254d459ec6ecac43c162529390 (diff)
parent6c856712825f69993f285c951cc32edb3858b61a (diff)
Merge branch 'master' of https://github.com/limbo-rs/config-rs
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/config.rs b/src/config.rs
index 33d17bc..60f8551 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -3,11 +3,13 @@ use std::ops::Deref;
use std::str::FromStr;
use std::fmt::Debug;
use serde::de::{Deserialize, Deserializer};
+use serde::ser::{Serialize, Serializer};
use error::*;
use source::Source;
+use ser::ConfigSerializer;
-use value::{Value, ValueWithKey};
+use value::{Value, ValueKind, ValueWithKey};
use path;
#[derive(Clone, Debug)]
@@ -190,6 +192,13 @@ impl Config {
T::deserialize(self)
}
+ /// Attempt to deserialize the entire configuration into the requested type.
+ pub fn try_from<T: Serialize>(from: &T) -> Result<Self> {
+ let mut serializer = ConfigSerializer::default();
+ from.serialize(&mut serializer)?;
+ Ok(serializer.output)
+ }
+
#[deprecated(since="0.7.0", note="please use 'try_into' instead")]
pub fn deserialize<'de, T: Deserialize<'de>>(self) -> Result<T> {
self.try_into()