7个不稳定版本
使用旧的Rust 2015
0.4.1 | 2020年12月2日 |
---|---|
0.4.0 | 2020年11月23日 |
0.3.2 | 2018年12月8日 |
0.2.0 | 2018年11月21日 |
0.1.0 | 2017年8月3日 |
#819 in 编码
416 次每月下载
在 tm-interpreter 中使用
25KB
682 行
serde_scan
轻松将空白分隔的数据反序列化到serde支持的任何Rust数据结构中。适用于演示、编程竞赛等。
当前问题
- 不支持具有结构变体的枚举
- 结构体或元组不能包含无界容器,如
Vec
或HashMap
。
示例
extern crate serde;
extern crate serde_scan;
#[macro_use]
extern crate serde_derive;
#[derive(Deserialize, Debug, PartialEq)]
struct Triple {
a: u32,
b: u32,
c: u32,
}
#[derive(Deserialize, Debug, PartialEq)]
enum Command {
Q,
Help,
Size(usize, usize),
Color(u8),
}
fn main() {
let s = "1 2 3";
let a: [u32; 3] = serde_scan::from_str(s).unwrap();
assert_eq!(a, [1, 2, 3]);
let b: (u32, u32, u32) = serde_scan::from_str(s).unwrap();
assert_eq!(b, (1, 2, 3));
let c: Triple = serde_scan::from_str(s).unwrap();
assert_eq!(c, Triple { a: 1, b: 2, c: 3 });
let s = "Size 1 2";
let size = serde_scan::from_str(s).unwrap();
assert_eq!(c, Command::Size(1, 2));
}
依赖项
~110–345KB