#iterator #row #column #col #imgref

imgref-iter

A small crate for iterating over the rows or columns of imgref buffers

8 unstable releases (3 breaking)

0.4.0 Aug 13, 2022
0.3.3 Jul 6, 2022
0.3.1 Jun 22, 2022
0.2.0 Jun 18, 2022
0.1.2 Jun 18, 2022

#1204 in Rust patterns

Download history 106/week @ 2023-12-04 64/week @ 2023-12-11 60/week @ 2023-12-18 126/week @ 2023-12-25 229/week @ 2024-01-01 112/week @ 2024-01-08 99/week @ 2024-01-15 176/week @ 2024-01-22 113/week @ 2024-01-29 193/week @ 2024-02-05 169/week @ 2024-02-12 115/week @ 2024-02-19 210/week @ 2024-02-26 92/week @ 2024-03-04 130/week @ 2024-03-11 104/week @ 2024-03-18

550 downloads per month
Used in 4 crates (2 directly)

MIT license

105KB
2K SLoC

imgref-iter

A small crate for iterating over the rows or columns of imgref buffers.

This crate exports four traits that allow creating iterators over rows or columns of imgref::Imgs:

  • ImgIterPtr for Img<*const [T]>; allows creating iterators over *const pointers

  • ImgIterPtrMut for Img<*mut [T]>; allows creating iterators over *mut pointers

  • ImgIter for Img<&[T]>; allows creating iterators over shared references

  • ImgIterMut for Img<&mut [T]>; allows creating iterators over mutable references

As well as two utility traits for converting to Img<*const [T]> or Img<*mut [T]>:

  • ImgAsPtr for conversions to Img<*const [T]>.

  • ImgAsMutPtr for conversions to Img<*mut [T]>.

    This is actually not implemented by anything other than Img<*mut [T]>, but it exists for the purpose of documenting why it cannot be implemented for Img<&mut [T]>.

Additionally, when the (experimental!) simd feature is enabled, there are four more traits - ImgSimdIter, ImgSimdIterMut, ImgSimdIterPtr, and ImgSimdIterPtrMut. These allow creating iterators over multiple rows or columns of an image at once. They don't actually depend on SIMD or a nightly compiler - they just return multiple items at once.

Methods on ImgIterPtr and ImgIterPtrMut are unsafe because they offset on the provided pointers. ImgIter and ImgIterMut cannot include safe versions because the pointer iterators may outlive the references.

See the documentation for more information.

Dependencies

~62KB