Struct serde_with::BytesOrString
source · [−]pub struct BytesOrString;
Expand description
Deserialize from bytes or string
Any Rust String
can be converted into bytes, i.e., Vec<u8>
.
Accepting both as formats while deserializing can be helpful while interacting with language
which have a looser definition of string than Rust.
Example
#[serde_as]
#[derive(Deserialize, Serialize)]
struct A {
#[serde_as(as = "BytesOrString")]
bytes_or_string: Vec<u8>,
}
// Here we deserialize from a byte array ...
let j = json!({
"bytes_or_string": [
0,
1,
2,
3
]
});
let a: A = serde_json::from_value(j.clone()).unwrap();
assert_eq!(vec![0, 1, 2, 3], a.bytes_or_string);
// and serialization works too.
assert_eq!(j, serde_json::to_value(&a).unwrap());
// But we also support deserializing from a String
let j = json!({
"bytes_or_string": "✨Works!"
});
let a: A = serde_json::from_value(j).unwrap();
assert_eq!("✨Works!".as_bytes(), &*a.bytes_or_string);
Trait Implementations
sourceimpl Clone for BytesOrString
impl Clone for BytesOrString
sourcefn clone(&self) -> BytesOrString
fn clone(&self) -> BytesOrString
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for BytesOrString
impl Debug for BytesOrString
sourceimpl Default for BytesOrString
impl Default for BytesOrString
sourcefn default() -> BytesOrString
fn default() -> BytesOrString
Returns the “default value” for a type. Read more
sourceimpl<'de> DeserializeAs<'de, Vec<u8, Global>> for BytesOrString
impl<'de> DeserializeAs<'de, Vec<u8, Global>> for BytesOrString
sourcefn deserialize_as<D>(deserializer: D) -> Result<Vec<u8>, D::Error> where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Vec<u8>, D::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer.
sourceimpl SerializeAs<Vec<u8, Global>> for BytesOrString
impl SerializeAs<Vec<u8, Global>> for BytesOrString
sourcefn serialize_as<S>(source: &Vec<u8>, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
fn serialize_as<S>(source: &Vec<u8>, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
Serialize this value into the given Serde serializer.
impl Copy for BytesOrString
Auto Trait Implementations
impl RefUnwindSafe for BytesOrString
impl Send for BytesOrString
impl Sync for BytesOrString
impl Unpin for BytesOrString
impl UnwindSafe for BytesOrString
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more