Skip to content

Commit eefee31

Browse files
committed
feat: fix Serialize and Deserialize
1 parent 57e1557 commit eefee31

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/arrayvec.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -1253,7 +1253,7 @@ impl<const CAP: usize> io::Write for ArrayVec<u8, CAP> {
12531253

12541254
#[cfg(feature = "serde")]
12551255
/// Requires crate feature `"serde"`
1256-
impl<T: Serialize, const CAP: usize> Serialize for ArrayVec<T, CAP> {
1256+
impl<T: Serialize, const CAP: usize, LenType: LenUint> Serialize for ArrayVec<T, CAP, LenType> {
12571257
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
12581258
where S: Serializer
12591259
{
@@ -1263,17 +1263,17 @@ impl<T: Serialize, const CAP: usize> Serialize for ArrayVec<T, CAP> {
12631263

12641264
#[cfg(feature = "serde")]
12651265
/// Requires crate feature `"serde"`
1266-
impl<'de, T: Deserialize<'de>, const CAP: usize> Deserialize<'de> for ArrayVec<T, CAP> {
1266+
impl<'de, T: Deserialize<'de>, const CAP: usize, LenType: LenUint> Deserialize<'de> for ArrayVec<T, CAP, LenType> {
12671267
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
12681268
where D: Deserializer<'de>
12691269
{
12701270
use serde::de::{Visitor, SeqAccess, Error};
12711271
use std::marker::PhantomData;
12721272

1273-
struct ArrayVecVisitor<'de, T: Deserialize<'de>, const CAP: usize>(PhantomData<(&'de (), [T; CAP])>);
1273+
struct ArrayVecVisitor<'de, T: Deserialize<'de>, const CAP: usize, LenType: LenUint>(PhantomData<(&'de (), [T; CAP], LenType)>);
12741274

1275-
impl<'de, T: Deserialize<'de>, const CAP: usize> Visitor<'de> for ArrayVecVisitor<'de, T, CAP> {
1276-
type Value = ArrayVec<T, CAP>;
1275+
impl<'de, T: Deserialize<'de>, const CAP: usize, LenType: LenUint> Visitor<'de> for ArrayVecVisitor<'de, T, CAP, LenType> {
1276+
type Value = ArrayVec<T, CAP, LenType>;
12771277

12781278
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
12791279
write!(formatter, "an array with no more than {} items", CAP)
@@ -1282,7 +1282,7 @@ impl<'de, T: Deserialize<'de>, const CAP: usize> Deserialize<'de> for ArrayVec<T
12821282
fn visit_seq<SA>(self, mut seq: SA) -> Result<Self::Value, SA::Error>
12831283
where SA: SeqAccess<'de>,
12841284
{
1285-
let mut values = ArrayVec::<T, CAP>::new();
1285+
let mut values = ArrayVec::<T, CAP, LenType>::new();
12861286

12871287
while let Some(value) = seq.next_element()? {
12881288
if let Err(_) = values.try_push(value) {
@@ -1294,6 +1294,6 @@ impl<'de, T: Deserialize<'de>, const CAP: usize> Deserialize<'de> for ArrayVec<T
12941294
}
12951295
}
12961296

1297-
deserializer.deserialize_seq(ArrayVecVisitor::<T, CAP>(PhantomData))
1297+
deserializer.deserialize_seq(ArrayVecVisitor::<T, CAP, LenType>(PhantomData))
12981298
}
12991299
}

0 commit comments

Comments
 (0)