diff --git a/src/value/mod.rs b/src/value/mod.rs index b3f51ea0d..3e80eb0c7 100644 --- a/src/value/mod.rs +++ b/src/value/mod.rs @@ -987,7 +987,7 @@ where /// "location": "Menlo Park, CA" /// }); /// -/// let u: User = serde_json::from_value(j).unwrap(); +/// let u: User = serde_json::from_value(&j).unwrap(); /// println!("{:#?}", u); /// } /// ``` @@ -1001,7 +1001,7 @@ where /// is wrong with the data, for example required struct fields are missing from /// the JSON map or some number is too big to fit in the expected primitive /// type. -pub fn from_value(value: Value) -> Result +pub fn from_value(value: &Value) -> Result where T: DeserializeOwned, { diff --git a/tests/regression/issue520.rs b/tests/regression/issue520.rs index 730ecc60a..88c9a33c4 100644 --- a/tests/regression/issue520.rs +++ b/tests/regression/issue520.rs @@ -12,7 +12,7 @@ enum E { fn test() { let e = E::Float(159.1); let v = serde_json::to_value(e).unwrap(); - let e = serde_json::from_value::(v).unwrap(); + let e = serde_json::from_value::(&v).unwrap(); match e { E::Float(f) => assert_eq!(f, 159.1), diff --git a/tests/regression/issue795.rs b/tests/regression/issue795.rs index 411e8af5d..f03c88580 100644 --- a/tests/regression/issue795.rs +++ b/tests/regression/issue795.rs @@ -58,5 +58,5 @@ fn test() { assert!(serde_json::from_str::(s).is_err()); let j = json!({"Variant":{"x":0,"y":0}}); - assert!(serde_json::from_value::(j).is_err()); + assert!(serde_json::from_value::(&j).is_err()); } diff --git a/tests/test.rs b/tests/test.rs index 7e6adad76..6c0f214b5 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -614,11 +614,11 @@ where assert_eq!(v, value); // Make sure we can deserialize from a `Value`. - let v: T = from_value(json_value.clone()).unwrap(); + let v: T = from_value(&json_value).unwrap(); assert_eq!(v, value); // Make sure we can round trip back to `Value`. - let json_value2: Value = from_value(json_value.clone()).unwrap(); + let json_value2: Value = from_value(&json_value).unwrap(); assert_eq!(json_value2, json_value); // Make sure we can fully ignore. @@ -1413,10 +1413,10 @@ fn test_missing_option_field() { let value: Foo = from_str("{\"x\": 5}").unwrap(); assert_eq!(value, Foo { x: Some(5) }); - let value: Foo = from_value(json!({})).unwrap(); + let value: Foo = from_value(&json!({})).unwrap(); assert_eq!(value, Foo { x: None }); - let value: Foo = from_value(json!({"x": 5})).unwrap(); + let value: Foo = from_value(&json!({"x": 5})).unwrap(); assert_eq!(value, Foo { x: Some(5) }); } @@ -1444,10 +1444,10 @@ fn test_missing_renamed_field() { let value: Foo = from_str("{\"y\": 5}").unwrap(); assert_eq!(value, Foo { x: Some(5) }); - let value: Foo = from_value(json!({})).unwrap(); + let value: Foo = from_value(&json!({})).unwrap(); assert_eq!(value, Foo { x: None }); - let value: Foo = from_value(json!({"y": 5})).unwrap(); + let value: Foo = from_value(&json!({"y": 5})).unwrap(); assert_eq!(value, Foo { x: Some(5) }); } @@ -1899,13 +1899,13 @@ fn test_integer_key() { (r#"{"123 ":null}"#, "expected `\"` at line 1 column 6"), ]); - let err = from_value::>(json!({" 123":null})).unwrap_err(); + let err = from_value::>(&json!({" 123":null})).unwrap_err(); assert_eq!( err.to_string(), "invalid value: expected key to be a number in quotes", ); - let err = from_value::>(json!({"123 ":null})).unwrap_err(); + let err = from_value::>(&json!({"123 ":null})).unwrap_err(); assert_eq!( err.to_string(), "invalid value: expected key to be a number in quotes",