Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
feat: use iter when possible
  • Loading branch information
MiyakoMeow committed Jun 23, 2025
commit e85593643c00f8e655160d9de611676867d6b3b1
30 changes: 13 additions & 17 deletions src/array_bincode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ where
I: Decode<Context>,
{
fn decode<D: Decoder<Context = Context>>(decoder: &mut D) -> Result<Self, DecodeError> {
Ok(Dim::new(Decode::decode(decoder)?))
Decode::decode(decoder).map(Dim::new)
}
}

Expand All @@ -45,7 +45,7 @@ where
I: BorrowDecode<'de, Context>,
{
fn borrow_decode<D: BorrowDecoder<'de, Context = Context>>(decoder: &mut D) -> Result<Self, DecodeError> {
Ok(Dim::new(BorrowDecode::borrow_decode(decoder)?))
BorrowDecode::borrow_decode(decoder).map(Dim::new)
}
}

Expand All @@ -54,32 +54,30 @@ impl Encode for IxDyn {
fn encode<E: bincode::enc::Encoder>(&self, encoder: &mut E) -> Result<(), EncodeError> {
let ix: &IxDynImpl = self.ix();
Encode::encode(&ix.len(), encoder)?;
for ix in ix.into_iter() {
Encode::encode(ix, encoder)?;
}
Ok(())
ix.into_iter()
.try_for_each(|ix| Encode::encode(ix, encoder))
}
}

/// **Requires crate feature `"bincode"`**
impl<Context> Decode<Context> for IxDynImpl {
fn decode<D: Decoder<Context = Context>>(decoder: &mut D) -> Result<Self, DecodeError> {
let len: usize = Decode::decode(decoder)?;
let vals = (0..len)
(0..len)
.map(|_| Decode::decode(decoder))
.collect::<Result<Vec<_>, DecodeError>>()?;
Ok(IxDynImpl::from(vals))
.collect::<Result<Vec<_>, DecodeError>>()
.map(IxDynImpl::from)
}
}

/// **Requires crate feature `"bincode"`**
impl<'de, Context> bincode::BorrowDecode<'de, Context> for IxDynImpl {
fn borrow_decode<D: BorrowDecoder<'de, Context = Context>>(decoder: &mut D) -> Result<Self, DecodeError> {
let len: usize = BorrowDecode::borrow_decode(decoder)?;
let vals = (0..len)
(0..len)
.map(|_| BorrowDecode::borrow_decode(decoder))
.collect::<Result<Vec<_>, DecodeError>>()?;
Ok(IxDynImpl::from(vals))
.collect::<Result<Vec<_>, DecodeError>>()
.map(IxDynImpl::from)
}
}

Expand All @@ -95,10 +93,8 @@ where
Encode::encode(&self.raw_dim(), encoder)?;
let iter = self.iter();
Encode::encode(&iter.len(), encoder)?;
for elt in iter.clone() {
Encode::encode(elt, encoder)?;
}
Ok(())
iter.into_iter()
.try_for_each(|elt| Encode::encode(elt, encoder))
}
}

Expand All @@ -116,7 +112,7 @@ where
.ok_or(DecodeError::Other("ARRAY_FORMAT_VERSION not match!"))?;
let dim: D = Decode::decode(decoder)?;
let data_len: usize = Decode::decode(decoder)?;
let data = (0..data_len)
let data: Vec<_> = (0..data_len)
.map(|_| Decode::decode(decoder))
.collect::<Result<Vec<_>, DecodeError>>()?;
let expected_size = dim.size();
Expand Down