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:
use deser::de::Limits;
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.push_layer(Limits::new().max_depth(2)),
|_driver| {},
)
.unwrap_err();
assert_eq!(
err.to_string(),
"Unexpected: recursion limit exceeded at line 1 column 3"
);