75 Commits

Author SHA1 Message Date
Bouke van der Bijl
53b5ddbdcd
Fix falsey typo 2017-12-07 17:36:36 +01:00
David Tolnay
788e431fde
Encountering an error is the cold path 2017-12-04 23:51:13 -08:00
David Tolnay
0048e76100
Decrease size of ErrorCode from 32 bytes to 24 bytes 2017-12-04 23:47:31 -08:00
David Tolnay
561b0dbe4d
Make deserialize_bytes work more like deserialize_str 2017-12-04 23:43:50 -08:00
David Tolnay
86cb0b9493
Override the try macro to eliminate From calls
We only use our own error type; no need for From conversions provided
by the standard library's try! macro. This reduces lines of LLVM IR by
4%.
2017-12-03 22:08:24 -08:00
David Tolnay
0961dbe9e7
Implement all the deserializer hints
This is a way to avoid instantiating all the Visitor methods on every
Visitor that is used with serde_json. If the Deserialize impl hints
that a boolean is required by invoking deserialize_bool, we don't also
need to instantiate its visit_u64 and visit_i64 and visit_f64 and
visit_str and visit_borrowed_str and visit_unit and visit_seq and
visit_map methods if the input contains some other type. Instead we
render the invalid_type error in a central place in the serde_json
Deserializer that is instantiated just once.

Improves compile time of json-benchmark by 30%.
2017-12-03 21:50:23 -08:00
David Tolnay
08b00d1855
Stop instantiating parse_value in MapKey::deserialize_any
The parse_value method is the most expensive method in serde_json in
terms of compile time. Before this change, we were instantiating it
twice for every derive(Deserialize) struct because every struct has
two different Visitor impls -- one for the key type and one for the
struct overall -- see https://serde.rs/deserialize-struct.html.

This improves compile time of json-benchmark by 20%.
2017-12-03 16:04:54 -08:00
David Tolnay
c8f0eb8bf9
Stop instantiating fix_position so many times 2017-12-03 15:00:50 -08:00
David Tolnay
da044527fc
Release 1.0.7 2017-12-01 10:43:53 -08:00
Bouke van der Bijl
8b486189b7
Support top-level primitives in StreamDeserializer 2017-12-01 18:41:25 +01:00
Konrad Borowski
17ef410097
Warn about enum_variant_names violations in enum N
Clippy fixed the bug in question.
2017-11-22 17:34:09 +01:00
David Tolnay
c5f30c3eb8
Release 1.0.6 2017-11-09 09:38:13 -08:00
David Tolnay
2453f51e6c
Whitelist needless_pass_by_value lint 2017-11-06 22:13:48 -08:00
David Tolnay
33021c460e
Suppress lint about fallible From<Error> for io::Error
The unreachable is actually unreachable.
2017-10-29 22:00:53 -07:00
David Tolnay
8b3f37aef7
Release 1.0.5 2017-10-28 23:39:20 -04:00
David Tolnay
683470ab2b
More detailed documentation of Index trait 2017-10-28 23:38:15 -04:00
sinkuu
35fd8c4c93 Remove unnecessary allow(needless_pass_by_value) 2017-10-26 18:16:40 +09:00
David Tolnay
6c1e480ce2
Clean up identity conversions 2017-10-20 21:39:55 -07:00
David Tolnay
bea035b19d
Release 1.0.4 2017-10-15 10:40:24 -07:00
David Tolnay
f9f204cb41
Explain square bracket indexing in more detail 2017-10-15 10:37:54 -07:00
David Tolnay
efad89d59a
Comma outside of array or object is not necessarily trailing
This code catches things like `[1, 2], 3` where the `, 3` are trailing
characters but the comma is not a trailing comma. Trailing comma is like
the commas in `[1,]` or `{"f":2,}`.
2017-09-24 23:41:15 -07:00
David Tolnay
6ec3ae1077
Remove commented code from PR 2017-09-09 13:05:40 -07:00
fmoor
1b02cfec24 add ErrorCode::TrailingComma 2017-09-05 17:25:17 -07:00
fmoor
4afb61cc02 change error type for trailing commas, fixes #352 2017-09-05 17:25:17 -07:00
David Tolnay
764e9607cf
Release 1.0.3 2017-09-04 13:42:48 -07:00
David Tolnay
79db7d4fe7
Optimize deserialize_ignored_any 2017-09-04 13:26:50 -07:00
David Tolnay
b67a9470c5
Remove unused extern crate core 2017-09-04 12:02:55 -07:00
David Tolnay
fd96650377
Ignore cast_lossless lint 2017-09-01 21:47:38 -07:00
David Tolnay
70dd4be9db
Ignore clippy's use_self lint 2017-08-24 00:25:54 -07:00
SeongChan Lee
7fbf18e95e Implement PartialEq<bool> for Value 2017-07-13 04:12:38 +09:00
Erick Tryzelaar
dea388114f Switch to using char::encode_utf8
Now that Rust 1.18 has come out, and according to our policy of supporting
the past 3 versions of rust, we can finally switch to using
`char::encode_utf8` to encode a character into a string.

Closes #270.
2017-06-10 12:24:56 -07:00
Martin Tomasi
046b6e0968 Better invalid type error message (addresses issue #319) 2017-05-21 17:32:34 +02:00
David Tolnay
4e33d77b71
Release 1.0.2 2017-05-08 16:11:11 -07:00
Phil Ruffwind
2b68532e9d Fully factor out visitor dependence in number parser
This requires making an enum (Number) to hold the three possible types
of visiting arguments.
2017-05-03 05:16:05 -04:00
Phil Ruffwind
476e753db8 Reduce visitor-dependence in number parsers
All these functions end up calling visit_f64 so rewriting these
functions to avoid dependence on the visitor type V is a no-brainer:

  - parse_long_integer
  - parse_decimal
  - parse_exponent
  - parse_exponent_overflow
  - visit_f64_from_parts
2017-05-03 02:23:41 -04:00
David Tolnay
8202c68c0a
Release 1.0.1 2017-04-27 17:10:58 -07:00
David Tolnay
6b17c363b9
No need for pub use in private module 2017-04-27 17:09:18 -07:00
David Tolnay
5df9d32be8
Add license info to value files 2017-04-27 17:02:21 -07:00
David Tolnay
1d445facde
Index got lost in the grand value division 2017-04-27 16:42:24 -07:00
David Tolnay
4cc9d87832
Treat non-integer key as a type error 2017-04-27 15:49:09 -07:00
David Tolnay
83e3ec0a45
Allow integers to be used as map keys again 2017-04-27 12:56:43 -07:00
David Tolnay
8e48fa0fb2
Remove an unreachable branch 2017-04-25 11:36:37 -07:00
David Tolnay
c5cd928ddc
Use the new linked-hash-map entry API 2017-04-21 15:27:00 -07:00
Pascal Hertleif
085af20882 Grand value division: value::de 2017-04-21 21:50:08 +02:00
Pascal Hertleif
af55b82f26 Grand value division: value::ser 2017-04-21 21:50:07 +02:00
Pascal Hertleif
3c439cfb52 Grand value division: value::from 2017-04-21 21:50:05 +02:00
Pascal Hertleif
f7d7a645c7 Grand value division: value::partial_eq 2017-04-21 21:50:03 +02:00
Pascal Hertleif
3cc1a44a10 Grand value division: value::index 2017-04-21 21:50:02 +02:00
Pascal Hertleif
39d55e7525 Move Value into its own mod 2017-04-21 21:49:47 +02:00
David Tolnay
d45ddf76a7
Release 1.0.0 2017-04-20 08:37:44 -07:00