diff --git a/Cargo.toml b/Cargo.toml index 2aa8992a2..41d54c1b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,14 +12,14 @@ repository = "https://japaric.github.io/serde-json-core/serde_json_core" version = "0.0.1" [dependencies] -heapless = "0.4.0" +heapless = "0.5.1" [dependencies.serde] default-features = false -version = "1.0.80" +version = "1.0.102" [dev-dependencies] -serde_derive = "1.0.80" +serde_derive = "1.0.102" [features] -std = ["serde/std"] \ No newline at end of file +std = ["serde/std"] diff --git a/src/de/enum_.rs b/src/de/enum_.rs index dcc983854..7e516878e 100644 --- a/src/de/enum_.rs +++ b/src/de/enum_.rs @@ -2,10 +2,7 @@ use serde::de; use crate::de::{Deserializer, Error, Result}; -pub(crate) struct UnitVariantAccess<'a, 'b> -where - 'b: 'a, -{ +pub(crate) struct UnitVariantAccess<'a, 'b> { de: &'a mut Deserializer<'b>, } diff --git a/src/de/map.rs b/src/de/map.rs index fc0e77b39..5af92ec17 100644 --- a/src/de/map.rs +++ b/src/de/map.rs @@ -2,10 +2,7 @@ use serde::de::{self, Visitor}; use crate::de::{Deserializer, Error}; -pub struct MapAccess<'a, 'b> -where - 'b: 'a, -{ +pub struct MapAccess<'a, 'b> { de: &'a mut Deserializer<'b>, first: bool, } @@ -60,10 +57,7 @@ impl<'a, 'de> de::MapAccess<'de> for MapAccess<'a, 'de> { } } -struct MapKey<'a, 'b> -where - 'b: 'a, -{ +struct MapKey<'a, 'b> { de: &'a mut Deserializer<'b>, } diff --git a/src/de/seq.rs b/src/de/seq.rs index b809dd165..f3dbbdca3 100644 --- a/src/de/seq.rs +++ b/src/de/seq.rs @@ -2,10 +2,7 @@ use serde::de; use crate::de::{Deserializer, Error, Result}; -pub(crate) struct SeqAccess<'a, 'b> -where - 'b: 'a, -{ +pub(crate) struct SeqAccess<'a, 'b> { first: bool, de: &'a mut Deserializer<'b>, } diff --git a/src/lib.rs b/src/lib.rs index 41df0c9c2..3d068ab1d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -57,7 +57,7 @@ #![deny(rust_2018_compatibility)] #![deny(rust_2018_idioms)] #![deny(warnings)] -#![no_std] +#![cfg_attr(not(feature = "std"), no_std)] pub mod de; pub mod ser; diff --git a/src/ser/mod.rs b/src/ser/mod.rs index f7d06a462..ef892e032 100644 --- a/src/ser/mod.rs +++ b/src/ser/mod.rs @@ -69,12 +69,13 @@ where // which take 200+ bytes of ROM / Flash macro_rules! serialize_unsigned { ($self:ident, $N:expr, $v:expr) => {{ - let mut buf: [u8; $N] = unsafe { mem::uninitialized() }; + let mut buf: [mem::MaybeUninit; $N] = + unsafe { mem::MaybeUninit::uninit().assume_init() }; let mut v = $v; let mut i = $N - 1; loop { - buf[i] = (v % 10) as u8 + b'0'; + buf[i] = mem::MaybeUninit::new((v % 10) as u8 + b'0'); v /= 10; if v == 0 { @@ -84,7 +85,9 @@ macro_rules! serialize_unsigned { } } - $self.buf.extend_from_slice(&buf[i..])?; + $self + .buf + .extend_from_slice(unsafe { mem::transmute::<_, &[u8]>(&buf[i..]) })?; Ok(()) }}; } @@ -100,10 +103,11 @@ macro_rules! serialize_signed { (false, v as $uxx) }; - let mut buf: [u8; $N] = unsafe { mem::uninitialized() }; + let mut buf: [mem::MaybeUninit; $N] = + unsafe { mem::MaybeUninit::uninit().assume_init() }; let mut i = $N - 1; loop { - buf[i] = (v % 10) as u8 + b'0'; + buf[i] = mem::MaybeUninit::new((v % 10) as u8 + b'0'); v /= 10; i -= 1; @@ -114,11 +118,13 @@ macro_rules! serialize_signed { } if signed { - buf[i] = b'-'; + buf[i] = mem::MaybeUninit::new(b'-'); } else { i += 1; } - $self.buf.extend_from_slice(&buf[i..])?; + $self + .buf + .extend_from_slice(unsafe { mem::transmute::<_, &[u8]>(&buf[i..]) })?; Ok(()) }}; }