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