From 3deab828f50cf18c7dddef3ad145643750834ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Mon, 13 Nov 2023 10:08:14 +0100 Subject: [PATCH 1/2] bump heapless to 0.8 --- CHANGELOG.md | 6 +++++- Cargo.toml | 2 +- src/ser/mod.rs | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bd1ee2e..5ee5de8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] -### Added +### Added - Support for optional package `defmt` which allows for easy conversion for error types when using tools like `probe-rs` for logging over debuggers. +### Changed + +- `heapless` bumped to v0.8. + ## [v0.5.1] - 2023-07-26 ### Added diff --git a/Cargo.toml b/Cargo.toml index f580ce7e..a17db23f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ version = "0.5.1" ryu = "1.0.5" [dependencies.heapless] -version = "0.7" +version = "0.8" optional = true [dependencies.serde] diff --git a/src/ser/mod.rs b/src/ser/mod.rs index ede8b624..0674aa15 100644 --- a/src/ser/mod.rs +++ b/src/ser/mod.rs @@ -448,7 +448,7 @@ pub fn to_string(value: &T) -> Result> where T: ser::Serialize + ?Sized, { - Ok(unsafe { str::from_utf8_unchecked(&to_vec::(value)?) }.into()) + Ok(unsafe { String::from_utf8_unchecked(to_vec::(value)?) }) } /// Serializes the given data structure as a JSON byte vector From c73589d22166547c1a03393237c86af8fa69cfdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Mon, 13 Nov 2023 11:34:01 +0100 Subject: [PATCH 2/2] fix custom-error-message --- src/de/mod.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/de/mod.rs b/src/de/mod.rs index 613323bc..b44ddb79 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -757,6 +757,7 @@ where #[cfg(test)] mod tests { + use core::str::FromStr; use serde_derive::Deserialize; #[derive(Debug, Deserialize, PartialEq)] @@ -1083,7 +1084,10 @@ mod tests { assert_eq!( crate::from_str::(r#"[10]"#), Err(crate::de::Error::CustomErrorWithMessage( - "invalid length 1, expected tuple struct Xy with 2 elements".into() + heapless::String::from_str( + "invalid length 1, expected tuple struct Xy with 2 elements" + ) + .unwrap() )) ); assert_eq!( @@ -1190,7 +1194,9 @@ mod tests { use serde::de::Error; assert_eq!( crate::de::Error::custom("something bad happened"), - crate::de::Error::CustomErrorWithMessage("something bad happened".into()) + crate::de::Error::CustomErrorWithMessage( + heapless::String::from_str("something bad happened").unwrap() + ) ); } @@ -1200,8 +1206,8 @@ mod tests { use serde::de::Error; assert_eq!( crate::de::Error::custom("0123456789012345678901234567890123456789012345678901234567890123 <- after here the message should be truncated"), - crate::de::Error::CustomErrorWithMessage( - "0123456789012345678901234567890123456789012345678901234567890123".into() + crate::de::Error::CustomErrorWithMessage(heapless::String::from_str( + "0123456789012345678901234567890123456789012345678901234567890123").unwrap() ) ); }