serde_cs/lib.rs
1//! `serde-cs` provides a serialization/deserialization wrapper for comma separated lists.
2//!
3//! # Examples
4//!
5//! ## Serialization
6//!
7//! ```rust
8//! use serde_cs::vec::CS;
9//! type Csu32 = CS<u32>;
10//!
11//! let cs: Csu32 = CS(vec![]);
12//! let s = serde_json::to_string(&cs).unwrap();
13//! assert_eq!(s, r#""""#);
14//!
15//! let cs: Csu32 = CS(vec![1]);
16//! let s = serde_json::to_string(&cs).unwrap();
17//! assert_eq!(s, r#""1""#);
18//!
19//! let cs: Csu32 = CS(vec![1, 2, 3]);
20//! let s = serde_json::to_string(&cs).unwrap();
21//! assert_eq!(s, r#""1,2,3""#);
22//! ```
23//!
24//!
25//! ## Deserialization
26//!
27//! ```rust
28//! use serde_cs::vec::CS;
29//! type Csu32 = CS<u32>;
30//!
31//! let s = r#""""#;
32//! let CS(cs): Csu32 = serde_json::from_str(s).unwrap();
33//! assert_eq!(cs, vec![0u32; 0]);
34//!
35//! let s = r#"",,,,""#;
36//! let CS(cs): Csu32 = serde_json::from_str(s).unwrap();
37//! assert_eq!(cs, vec![0u32; 0]);
38//!
39//! let s = r#"",,1,,,,,""#;
40//! let CS(cs): Csu32 = serde_json::from_str(s).unwrap();
41//! assert_eq!(cs, vec![1]);
42//!
43//! let s = r#"",,1,,,2,,,,""#;
44//! let CS(cs): Csu32 = serde_json::from_str(s).unwrap();
45//! assert_eq!(cs, vec![1, 2]);
46//!
47//! let s = r#"",,1,,,a,,,,""#;
48//! let res: Result<Csu32, _> = serde_json::from_str(s);
49//! assert!(res.is_err());
50//! ```
51
52pub mod array;
53pub mod vec;