Enum biscuit::SingleOrMultiple [] [src]

pub enum SingleOrMultiple<T> {
    Single(T),
    Multiple(Vec<T>),
}

Represents a choice between a single value or multiple values. This value is serialized by serde untagged.

Examples

extern crate biscuit;
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;

use biscuit::SingleOrMultiple;

#[derive(Debug, Eq, PartialEq, Serialize, Deserialize)]
struct SingleOrMultipleStrings {
    values: SingleOrMultiple<String>,
}

let single = SingleOrMultipleStrings {
    values: SingleOrMultiple::Single("foobar".to_string())
};
let expected_json = r#"{"values":"foobar"}"#;

let serialized = serde_json::to_string(&single).unwrap();
assert_eq!(expected_json, serialized);

let deserialized: SingleOrMultipleStrings = serde_json::from_str(&serialized).unwrap();
assert_eq!(deserialized, single);

let multiple = SingleOrMultipleStrings {
    values: SingleOrMultiple::Multiple(vec!["foo".to_string(),
                                            "bar".to_string(),
                                            "baz".to_string()]),
};

let expected_json = r#"{"values":["foo","bar","baz"]}"#;

let serialized = serde_json::to_string(&multiple).unwrap();
assert_eq!(expected_json, serialized);

let deserialized: SingleOrMultipleStrings = serde_json::from_str(&serialized).unwrap();
assert_eq!(deserialized, multiple);

Variants

One single value

Multiple values

Methods

impl<T> SingleOrMultiple<T> where
    T: Clone + Debug + Eq + PartialEq + Serialize + DeserializeOwned + Send + Sync
[src]

Checks whether this enum, regardless of single or multiple value contains value.

Yields an iterator for the single value or the list

Trait Implementations

impl<T: Clone> Clone for SingleOrMultiple<T>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<T: Debug> Debug for SingleOrMultiple<T>
[src]

Formats the value using the given formatter.

impl<T: Eq> Eq for SingleOrMultiple<T>
[src]

impl<T: PartialEq> PartialEq for SingleOrMultiple<T>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.