Skip to content

Commit 6d18459

Browse files
authored
Merge branch 'serde-rs:master' into json_map_with_capacity
2 parents 7dd7d81 + 5b441a2 commit 6d18459

File tree

15 files changed

+144
-129
lines changed

15 files changed

+144
-129
lines changed

.github/workflows/ci.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
strategy:
3434
fail-fast: false
3535
matrix:
36-
rust: [beta, stable, 1.53.0, 1.46.0, 1.45.0, 1.40.0, 1.38.0, 1.36.0]
36+
rust: [beta, stable, 1.56.1, 1.53.0, 1.46.0, 1.45.0, 1.40.0, 1.38.0, 1.36.0]
3737
os: [ubuntu]
3838
include:
3939
- rust: stable
@@ -51,9 +51,9 @@ jobs:
5151
- run: cargo check --manifest-path tests/crate/Cargo.toml --no-default-features --features alloc
5252
- run: cargo check --manifest-path tests/crate/Cargo.toml --no-default-features --features alloc,raw_value
5353
- run: cargo check --features preserve_order
54-
if: matrix.rust != '1.45.0' && matrix.rust != '1.40.0' && matrix.rust != '1.38.0' && matrix.rust != '1.36.0'
54+
if: matrix.rust != '1.53.0' && matrix.rust != '1.46.0' && matrix.rust != '1.45.0' && matrix.rust != '1.40.0' && matrix.rust != '1.38.0' && matrix.rust != '1.36.0'
5555
- run: cargo check --manifest-path tests/crate/Cargo.toml --no-default-features --features alloc,preserve_order
56-
if: matrix.rust != '1.45.0' && matrix.rust != '1.40.0' && matrix.rust != '1.38.0' && matrix.rust != '1.36.0'
56+
if: matrix.rust != '1.53.0' && matrix.rust != '1.46.0' && matrix.rust != '1.45.0' && matrix.rust != '1.40.0' && matrix.rust != '1.38.0' && matrix.rust != '1.36.0'
5757
- name: Build without std
5858
run: |
5959
rustup target add aarch64-unknown-none
@@ -101,5 +101,15 @@ jobs:
101101
steps:
102102
- uses: actions/checkout@v3
103103
- uses: dtolnay/rust-toolchain@nightly
104-
- run: cargo install cargo-fuzz --debug
104+
- uses: dtolnay/install@cargo-fuzz
105105
- run: cargo fuzz build -O
106+
107+
outdated:
108+
name: Outdated
109+
runs-on: ubuntu-latest
110+
if: github.event_name != 'pull_request'
111+
steps:
112+
- uses: actions/checkout@v3
113+
- uses: dtolnay/install@cargo-outdated
114+
- run: cargo outdated --workspace --exit-code 1
115+
- run: cargo outdated --manifest-path fuzz/Cargo.toml --exit-code 1

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "serde_json"
3-
version = "1.0.81" # remember to update html_root_url
3+
version = "1.0.82" # remember to update html_root_url
44
authors = ["Erick Tryzelaar <[email protected]>", "David Tolnay <[email protected]>"]
55
license = "MIT OR Apache-2.0"
66
description = "A JSON serialization file format"

fuzz/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
[package]
22
name = "serde_json-fuzz"
33
version = "0.0.0"
4-
authors = ["David Korczynski <[email protected]>"]
54
publish = false
6-
edition = "2018"
5+
edition = "2021"
76

87
[package.metadata]
98
cargo-fuzz = true
@@ -15,6 +14,7 @@ serde_json = { path = ".." }
1514
[[bin]]
1615
name = "from_slice"
1716
path = "fuzz_targets/from_slice.rs"
17+
test = false
18+
doc = false
1819

19-
# Prevent this from interfering with workspaces
2020
[workspace]

src/error.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -284,9 +284,9 @@ impl Error {
284284

285285
impl Display for ErrorCode {
286286
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
287-
match *self {
288-
ErrorCode::Message(ref msg) => f.write_str(msg),
289-
ErrorCode::Io(ref err) => Display::fmt(err, f),
287+
match self {
288+
ErrorCode::Message(msg) => f.write_str(msg),
289+
ErrorCode::Io(err) => Display::fmt(err, f),
290290
ErrorCode::EofWhileParsingList => f.write_str("EOF while parsing a list"),
291291
ErrorCode::EofWhileParsingObject => f.write_str("EOF while parsing an object"),
292292
ErrorCode::EofWhileParsingString => f.write_str("EOF while parsing a string"),
@@ -318,8 +318,8 @@ impl Display for ErrorCode {
318318
impl serde::de::StdError for Error {
319319
#[cfg(feature = "std")]
320320
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
321-
match self.err.code {
322-
ErrorCode::Io(ref err) => Some(err),
321+
match &self.err.code {
322+
ErrorCode::Io(err) => Some(err),
323323
_ => None,
324324
}
325325
}
@@ -438,7 +438,7 @@ fn parse_line_col(msg: &mut String) -> Option<(usize, usize)> {
438438
}
439439

440440
fn starts_with_digit(slice: &str) -> bool {
441-
match slice.as_bytes().get(0) {
441+
match slice.as_bytes().first() {
442442
None => false,
443443
Some(&byte) => byte >= b'0' && byte <= b'9',
444444
}

src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,14 +300,15 @@
300300
//! [macro]: https://docs.serde.rs/serde_json/macro.json.html
301301
//! [`serde-json-core`]: https://github.com/rust-embedded-community/serde-json-core
302302
303-
#![doc(html_root_url = "https://docs.rs/serde_json/1.0.81")]
303+
#![doc(html_root_url = "https://docs.rs/serde_json/1.0.82")]
304304
// Ignored clippy lints
305305
#![allow(
306306
clippy::collapsible_else_if,
307307
clippy::comparison_chain,
308308
clippy::deprecated_cfg_attr,
309309
clippy::doc_markdown,
310310
clippy::excessive_precision,
311+
clippy::explicit_auto_deref,
311312
clippy::float_cmp,
312313
clippy::manual_range_contains,
313314
clippy::match_like_matches_macro,

src/map.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,10 @@ impl Eq for Map<String, Value> {}
323323
/// #
324324
/// # let val = &Value::String("".to_owned());
325325
/// # let _ =
326-
/// match *val {
327-
/// Value::String(ref s) => Some(s.as_str()),
328-
/// Value::Array(ref arr) => arr[0].as_str(),
329-
/// Value::Object(ref map) => map["type"].as_str(),
326+
/// match val {
327+
/// Value::String(s) => Some(s.as_str()),
328+
/// Value::Array(arr) => arr[0].as_str(),
329+
/// Value::Object(map) => map["type"].as_str(),
330330
/// _ => None,
331331
/// }
332332
/// # ;
@@ -530,9 +530,9 @@ impl<'a> Entry<'a> {
530530
/// assert_eq!(map.entry("serde").key(), &"serde");
531531
/// ```
532532
pub fn key(&self) -> &String {
533-
match *self {
534-
Entry::Vacant(ref e) => e.key(),
535-
Entry::Occupied(ref e) => e.key(),
533+
match self {
534+
Entry::Vacant(e) => e.key(),
535+
Entry::Occupied(e) => e.key(),
536536
}
537537
}
538538

src/read.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ where
252252
Some(ch) => {
253253
#[cfg(feature = "raw_value")]
254254
{
255-
if let Some(ref mut buf) = self.raw_buffer {
255+
if let Some(buf) = &mut self.raw_buffer {
256256
buf.push(ch);
257257
}
258258
}
@@ -263,7 +263,7 @@ where
263263
Some(Ok(ch)) => {
264264
#[cfg(feature = "raw_value")]
265265
{
266-
if let Some(ref mut buf) = self.raw_buffer {
266+
if let Some(buf) = &mut self.raw_buffer {
267267
buf.push(ch);
268268
}
269269
}
@@ -298,7 +298,7 @@ where
298298
#[cfg(feature = "raw_value")]
299299
fn discard(&mut self) {
300300
if let Some(ch) = self.ch.take() {
301-
if let Some(ref mut buf) = self.raw_buffer {
301+
if let Some(buf) = &mut self.raw_buffer {
302302
buf.push(ch);
303303
}
304304
}

src/ser.rs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -533,11 +533,8 @@ where
533533
where
534534
T: ?Sized + Serialize,
535535
{
536-
match *self {
537-
Compound::Map {
538-
ref mut ser,
539-
ref mut state,
540-
} => {
536+
match self {
537+
Compound::Map { ser, state } => {
541538
tri!(ser
542539
.formatter
543540
.begin_array_value(&mut ser.writer, *state == State::First)
@@ -671,11 +668,8 @@ where
671668
where
672669
T: ?Sized + Serialize,
673670
{
674-
match *self {
675-
Compound::Map {
676-
ref mut ser,
677-
ref mut state,
678-
} => {
671+
match self {
672+
Compound::Map { ser, state } => {
679673
tri!(ser
680674
.formatter
681675
.begin_object_key(&mut ser.writer, *state == State::First)
@@ -702,8 +696,8 @@ where
702696
where
703697
T: ?Sized + Serialize,
704698
{
705-
match *self {
706-
Compound::Map { ref mut ser, .. } => {
699+
match self {
700+
Compound::Map { ser, .. } => {
707701
tri!(ser
708702
.formatter
709703
.begin_object_value(&mut ser.writer)
@@ -753,10 +747,10 @@ where
753747
where
754748
T: ?Sized + Serialize,
755749
{
756-
match *self {
750+
match self {
757751
Compound::Map { .. } => ser::SerializeMap::serialize_entry(self, key, value),
758752
#[cfg(feature = "arbitrary_precision")]
759-
Compound::Number { ref mut ser, .. } => {
753+
Compound::Number { ser, .. } => {
760754
if key == crate::number::TOKEN {
761755
tri!(value.serialize(NumberStrEmitter(ser)));
762756
Ok(())
@@ -765,7 +759,7 @@ where
765759
}
766760
}
767761
#[cfg(feature = "raw_value")]
768-
Compound::RawValue { ref mut ser, .. } => {
762+
Compound::RawValue { ser, .. } => {
769763
if key == crate::raw::TOKEN {
770764
tri!(value.serialize(RawValueStrEmitter(ser)));
771765
Ok(())

src/value/de.rs

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -648,8 +648,8 @@ macro_rules! deserialize_value_ref_number {
648648
where
649649
V: Visitor<'de>,
650650
{
651-
match *self {
652-
Value::Number(ref n) => n.deserialize_any(visitor),
651+
match self {
652+
Value::Number(n) => n.deserialize_any(visitor),
653653
_ => Err(self.invalid_type(&visitor)),
654654
}
655655
}
@@ -659,8 +659,8 @@ macro_rules! deserialize_value_ref_number {
659659
where
660660
V: Visitor<'de>,
661661
{
662-
match *self {
663-
Value::Number(ref n) => n.$method(visitor),
662+
match self {
663+
Value::Number(n) => n.$method(visitor),
664664
_ => self.deserialize_any(visitor),
665665
}
666666
}
@@ -710,13 +710,13 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
710710
where
711711
V: Visitor<'de>,
712712
{
713-
match *self {
713+
match self {
714714
Value::Null => visitor.visit_unit(),
715-
Value::Bool(v) => visitor.visit_bool(v),
716-
Value::Number(ref n) => n.deserialize_any(visitor),
717-
Value::String(ref v) => visitor.visit_borrowed_str(v),
718-
Value::Array(ref v) => visit_array_ref(v, visitor),
719-
Value::Object(ref v) => visit_object_ref(v, visitor),
715+
Value::Bool(v) => visitor.visit_bool(*v),
716+
Value::Number(n) => n.deserialize_any(visitor),
717+
Value::String(v) => visitor.visit_borrowed_str(v),
718+
Value::Array(v) => visit_array_ref(v, visitor),
719+
Value::Object(v) => visit_object_ref(v, visitor),
720720
}
721721
}
722722

@@ -755,8 +755,8 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
755755
where
756756
V: Visitor<'de>,
757757
{
758-
let (variant, value) = match *self {
759-
Value::Object(ref value) => {
758+
let (variant, value) = match self {
759+
Value::Object(value) => {
760760
let mut iter = value.into_iter();
761761
let (variant, value) = match iter.next() {
762762
Some(v) => v,
@@ -776,8 +776,8 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
776776
}
777777
(variant, Some(value))
778778
}
779-
Value::String(ref variant) => (variant, None),
780-
ref other => {
779+
Value::String(variant) => (variant, None),
780+
other => {
781781
return Err(serde::de::Error::invalid_type(
782782
other.unexpected(),
783783
&"string or map",
@@ -831,8 +831,8 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
831831
where
832832
V: Visitor<'de>,
833833
{
834-
match *self {
835-
Value::String(ref v) => visitor.visit_borrowed_str(v),
834+
match self {
835+
Value::String(v) => visitor.visit_borrowed_str(v),
836836
_ => Err(self.invalid_type(&visitor)),
837837
}
838838
}
@@ -848,9 +848,9 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
848848
where
849849
V: Visitor<'de>,
850850
{
851-
match *self {
852-
Value::String(ref v) => visitor.visit_borrowed_str(v),
853-
Value::Array(ref v) => visit_array_ref(v, visitor),
851+
match self {
852+
Value::String(v) => visitor.visit_borrowed_str(v),
853+
Value::Array(v) => visit_array_ref(v, visitor),
854854
_ => Err(self.invalid_type(&visitor)),
855855
}
856856
}
@@ -883,8 +883,8 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
883883
where
884884
V: Visitor<'de>,
885885
{
886-
match *self {
887-
Value::Array(ref v) => visit_array_ref(v, visitor),
886+
match self {
887+
Value::Array(v) => visit_array_ref(v, visitor),
888888
_ => Err(self.invalid_type(&visitor)),
889889
}
890890
}
@@ -912,8 +912,8 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
912912
where
913913
V: Visitor<'de>,
914914
{
915-
match *self {
916-
Value::Object(ref v) => visit_object_ref(v, visitor),
915+
match self {
916+
Value::Object(v) => visit_object_ref(v, visitor),
917917
_ => Err(self.invalid_type(&visitor)),
918918
}
919919
}
@@ -927,9 +927,9 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
927927
where
928928
V: Visitor<'de>,
929929
{
930-
match *self {
931-
Value::Array(ref v) => visit_array_ref(v, visitor),
932-
Value::Object(ref v) => visit_object_ref(v, visitor),
930+
match self {
931+
Value::Array(v) => visit_array_ref(v, visitor),
932+
Value::Object(v) => visit_object_ref(v, visitor),
933933
_ => Err(self.invalid_type(&visitor)),
934934
}
935935
}
@@ -1274,11 +1274,11 @@ impl Value {
12741274

12751275
#[cold]
12761276
fn unexpected(&self) -> Unexpected {
1277-
match *self {
1277+
match self {
12781278
Value::Null => Unexpected::Unit,
1279-
Value::Bool(b) => Unexpected::Bool(b),
1280-
Value::Number(ref n) => n.unexpected(),
1281-
Value::String(ref s) => Unexpected::Str(s),
1279+
Value::Bool(b) => Unexpected::Bool(*b),
1280+
Value::Number(n) => n.unexpected(),
1281+
Value::String(s) => Unexpected::Str(s),
12821282
Value::Array(_) => Unexpected::Seq,
12831283
Value::Object(_) => Unexpected::Map,
12841284
}

src/value/from.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,15 @@ impl From<()> for Value {
268268
Value::Null
269269
}
270270
}
271+
272+
impl<T> From<Option<T>> for Value
273+
where
274+
T: Into<Value>,
275+
{
276+
fn from(opt: Option<T>) -> Self {
277+
match opt {
278+
None => Value::Null,
279+
Some(value) => Into::into(value),
280+
}
281+
}
282+
}

0 commit comments

Comments
 (0)