[][src]Struct serde_with::rust::StringWithSeparator

pub struct StringWithSeparator<Sep, T = ()>(_);

De/Serialize a delimited collection using Display and FromStr implementation

You can define an arbitrary separator, by specifying a type which implements Separator. Some common ones, like space and comma are already predefined and you can find them here.

An empty string deserializes as an empty collection.

Examples

use serde_with::{CommaSeparator, SpaceSeparator};
use std::collections::BTreeSet;

#[derive(Deserialize, Serialize)]
struct A {
    #[serde(with = "serde_with::rust::StringWithSeparator::<SpaceSeparator>")]
    tags: Vec<String>,
    #[serde(with = "serde_with::rust::StringWithSeparator::<CommaSeparator>")]
    more_tags: BTreeSet<String>,
}

let v: A = serde_json::from_str(r##"{
    "tags": "#hello #world",
    "more_tags": "foo,bar,bar"
}"##).unwrap();
assert_eq!(vec!["#hello", "#world"], v.tags);
assert_eq!(2, v.more_tags.len());

let x = A {
    tags: vec!["1".to_string(), "2".to_string(), "3".to_string()],
    more_tags: BTreeSet::new(),
};
assert_eq!(r#"{"tags":"1 2 3","more_tags":""}"#, serde_json::to_string(&x).unwrap());

Implementations

impl<Sep> StringWithSeparator<Sep> where
    Sep: Separator
[src]

pub fn serialize<S, T, V>(values: T, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer,
    T: IntoIterator<Item = V>,
    V: Display
[src]

Serialize collection into a string with separator symbol

pub fn deserialize<'de, D, T, V>(deserializer: D) -> Result<T, D::Error> where
    D: Deserializer<'de>,
    T: FromIterator<V>,
    V: FromStr,
    V::Err: Display
[src]

Deserialize a collection from a string with separator symbol

Trait Implementations

impl<Sep: Clone, T: Clone> Clone for StringWithSeparator<Sep, T>[src]

impl<Sep: Copy, T: Copy> Copy for StringWithSeparator<Sep, T>[src]

impl<Sep: Debug, T: Debug> Debug for StringWithSeparator<Sep, T>[src]

impl<Sep: Default, T: Default> Default for StringWithSeparator<Sep, T>[src]

impl<'de, SEPARATOR, I, T> DeserializeAs<'de, I> for StringWithSeparator<SEPARATOR, T> where
    SEPARATOR: Separator,
    I: FromIterator<T>,
    T: FromStr,
    T::Err: Display
[src]

impl<Sep: Eq, T: Eq> Eq for StringWithSeparator<Sep, T>[src]

impl<Sep: Hash, T: Hash> Hash for StringWithSeparator<Sep, T>[src]

impl<Sep: Ord, T: Ord> Ord for StringWithSeparator<Sep, T>[src]

impl<Sep: PartialEq, T: PartialEq> PartialEq<StringWithSeparator<Sep, T>> for StringWithSeparator<Sep, T>[src]

impl<Sep: PartialOrd, T: PartialOrd> PartialOrd<StringWithSeparator<Sep, T>> for StringWithSeparator<Sep, T>[src]

impl<SEPARATOR, I, T> SerializeAs<I> for StringWithSeparator<SEPARATOR, T> where
    SEPARATOR: Separator,
    &'a I: IntoIterator<Item = &'a T>,
    T: ToString
[src]

impl<Sep, T> StructuralEq for StringWithSeparator<Sep, T>[src]

impl<Sep, T> StructuralPartialEq for StringWithSeparator<Sep, T>[src]

Auto Trait Implementations

impl<Sep, T> RefUnwindSafe for StringWithSeparator<Sep, T> where
    Sep: RefUnwindSafe,
    T: RefUnwindSafe

impl<Sep, T> Send for StringWithSeparator<Sep, T> where
    Sep: Send,
    T: Send

impl<Sep, T> Sync for StringWithSeparator<Sep, T> where
    Sep: Sync,
    T: Sync

impl<Sep, T> Unpin for StringWithSeparator<Sep, T> where
    Sep: Unpin,
    T: Unpin

impl<Sep, T> UnwindSafe for StringWithSeparator<Sep, T> where
    Sep: UnwindSafe,
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.