# `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::Img`s:
- `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]>`.
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](https://docs.rs/imgref-iter) for more information.