Skip to main content

transcode_with

Function transcode_with 

Source
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"
);