diff options
author | Alex Crichton <alex@alexcrichton.com> | 2017-01-29 16:53:20 -0800 |
---|---|---|
committer | Alex Crichton <alex@alexcrichton.com> | 2017-02-08 21:21:18 -0800 |
commit | f66d8bcf33530c858a502bfa170f2383a8cbc204 (patch) | |
tree | 76498b837fc5f1f6ba0a5f53e1b2d85c6638da4d /tests/formatting.rs | |
parent | 473908c9722eeedeec1777237a135f582faa78d8 (diff) | |
download | milf-rs-f66d8bcf33530c858a502bfa170f2383a8cbc204.tar.gz milf-rs-f66d8bcf33530c858a502bfa170f2383a8cbc204.zip |
Rewrite crate with serde support from ground up
This commit completely rewrites this crate from the ground up,
supporting serde at the lowest levels as I believe serde support was
intended to do. This is a major change from the previous versions of
this crate, with a summary of changes being:
* Serialization directly to TOML is now supported without going through
a `Value` first.
* Deserialization directly from TOML is now supported without going
through a `Value`. Note that due to the TOML format some values still
are buffered in intermediate memory, but overall this should be at a
minimum now.
* The API of `Value` was overhauled to match the API of
`serde_json::Value`. The changes here were to:
* Add `is_*` accessors
* Add `get` and `get_mut` for one-field lookups.
* Implement panicking lookups through `Index`
The old `index` methods are now gone in favor of `get` and `Index`
implementations.
* A `Datetime` type has been added to represent a TOML datetime in a
first-class fashion. Currently this type provides no accessors other
than a `Display` implementation, but the idea is that this will grow
support over time for decomposing the date.
* Support for the `rustc-serialize` crate has been dropped, that'll stay
on the 0.2 and 0.1 release trains.
* This crate no longer supports the detection of unused fields, for that though
you can use the `serde_ignored` crate on crates.io
Diffstat (limited to 'tests/formatting.rs')
-rw-r--r-- | tests/formatting.rs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/tests/formatting.rs b/tests/formatting.rs index b8f4082..10fb165 100644 --- a/tests/formatting.rs +++ b/tests/formatting.rs @@ -1,19 +1,22 @@ -extern crate rustc_serialize; +extern crate serde; +#[macro_use] +extern crate serde_derive; extern crate toml; -use toml::encode_str; -#[derive(Debug, Clone, Hash, PartialEq, Eq, RustcEncodable, RustcDecodable)] +use toml::to_string; + +#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)] struct User { pub name: String, pub surname: String, } -#[derive(Debug, Clone, Hash, PartialEq, Eq, RustcEncodable, RustcDecodable)] +#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)] struct Users { pub user: Vec<User>, } -#[derive(Debug, Clone, Hash, PartialEq, Eq, RustcEncodable, RustcDecodable)] +#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)] struct TwoUsers { pub user0: User, pub user1: User, @@ -21,7 +24,7 @@ struct TwoUsers { #[test] fn no_unnecessary_newlines_array() { - assert!(!encode_str(&Users { + assert!(!to_string(&Users { user: vec![ User { name: "John".to_string(), @@ -32,13 +35,13 @@ fn no_unnecessary_newlines_array() { surname: "Dough".to_string(), }, ], - }) + }).unwrap() .starts_with("\n")); } #[test] fn no_unnecessary_newlines_table() { - assert!(!encode_str(&TwoUsers { + assert!(!to_string(&TwoUsers { user0: User { name: "John".to_string(), surname: "Doe".to_string(), @@ -47,6 +50,6 @@ fn no_unnecessary_newlines_table() { name: "Jane".to_string(), surname: "Dough".to_string(), }, - }) + }).unwrap() .starts_with("\n")); } |