Function abi_stable::std_types::cow::deserialize_borrowed_str[][src]

pub fn deserialize_borrowed_str<'de, 'a, D>(
    deserializer: D
) -> Result<RCow<'a, str>, D::Error> where
    D: Deserializer<'de>,
    'de: 'a, 
Expand description

Deserializes an RCow<'a, str> that borrows the string from the deserializer whenever possible.

Example

Defining a type containing an RCow<'a, str> which borrows from the deserializer.

use abi_stable::std_types::cow::{deserialize_borrowed_str, RCow};

use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize, PartialEq)]
pub struct TheSlice<'a> {
    #[serde(borrow, deserialize_with = "deserialize_borrowed_str")]
    slice: RCow<'a, str>,
}

let the_slice = TheSlice {
    slice: RCow::from("That's a lot of fish."),
};

let string = serde_json::to_string(&the_slice).unwrap();

let deserialized_slice = serde_json::from_str::<TheSlice<'_>>(&string).unwrap();

assert_eq!(the_slice, deserialized_slice);

assert!(deserialized_slice.slice.is_borrowed());