|
3 | 3 |
|
4 | 4 | use std::str::Chars;
|
5 | 5 |
|
6 |
| -use merde_core::{ArrayStart, Deserializer, Event}; |
| 6 | +use merde_core::{ArrayStart, Deserialize, DeserializeOwned, Deserializer, Event}; |
7 | 7 | use yaml_rust2::{parser::Parser, scanner::TScalarStyle, ScanError};
|
8 | 8 |
|
9 | 9 | /// A YAML deserializer, that implements [`merde_core::Deserializer`].
|
@@ -79,7 +79,6 @@ impl<'s> Deserializer<'s> for YamlDeserializer<'s> {
|
79 | 79 | return Err(e.into());
|
80 | 80 | }
|
81 | 81 | };
|
82 |
| - println!("ev = {ev:?}"); |
83 | 82 |
|
84 | 83 | use yaml_rust2::Event as YEvent;
|
85 | 84 |
|
@@ -176,3 +175,22 @@ impl<'s> Deserializer<'s> for YamlDeserializer<'s> {
|
176 | 175 | T::deserialize(self).await
|
177 | 176 | }
|
178 | 177 | }
|
| 178 | + |
| 179 | +/// Deserialize an instance of type `T` from a string of YAML text. |
| 180 | +pub fn from_str<'s, T>(s: &'s str) -> Result<T, MerdeYamlError<'s>> |
| 181 | +where |
| 182 | + T: Deserialize<'s>, |
| 183 | +{ |
| 184 | + let mut deser = YamlDeserializer::new(s); |
| 185 | + deser.deserialize::<T>() |
| 186 | +} |
| 187 | + |
| 188 | +/// Deserialize an instance of type `T` from a string of YAML text, |
| 189 | +/// and return its static variant e.g. (CowStr<'static>, etc.) |
| 190 | +pub fn from_str_owned<T>(s: &str) -> Result<T, MerdeYamlError<'_>> |
| 191 | +where |
| 192 | + T: DeserializeOwned, |
| 193 | +{ |
| 194 | + let mut deser = YamlDeserializer::new(s); |
| 195 | + T::deserialize_owned(&mut deser) |
| 196 | +} |
0 commit comments