pub fn transcode_with<'de, D, S, DF, SF>(
de: &mut D,
ser: &mut S,
de_setup: DF,
ser_setup: SF,
) -> Result<(), Error>where
D: Deserializer<'de> + ?Sized,
S: Serializer + ?Sized,
DF: FnOnce(&mut DeserializeDriver<'_, 'de>),
SF: FnOnce(&mut SerializeDriver<'_>),Expand description
Transcodes a value with configured drivers.
The callbacks are invoked with the drivers before the value is deserialized and serialized, for instance to add layers or to give them a context:
use deser::Context;
use deser::de::Limits;
let limits = Context::with(Limits::builder().max_depth(2).build());
let mut de = deser_json::Deserializer::from_str("[[[1]]]");
let mut ser = deser_yaml::Serializer::new();
let err = deser_transcode::transcode_with(
&mut de,
&mut ser,
|driver| driver.set_context(limits.clone()),
|_driver| {},
)
.unwrap_err();
assert_eq!(
err.to_string(),
"LimitExceeded: recursion limit exceeded at line 1 column 3"
);