toodee 0.1.1

A lightweight 2D wrapper around a Vec.
Documentation

Build Status

toodee

TooDee is a lightweight and high performance two-dimensional wrapper around a Vec.

Core features

  • Raw access to the underlying vector's slice via data() and data_mut().
  • Creation of performant two-dimensional subsets using view() and view_mut().
  • Get/set specific cells using indexing, e.g., toodee[row][col] = val.
  • Index by row (i.e., row major) to get/set row slices, e.g., toodee[row].
  • Iteration, any which way - rows(), rows_mut(), col(), col_mut(), cells(), cells_mut().
  • no_std compliant.
  • Can create a new TooDeeView or TooDeeViewMut directly from a &[T] or &mut [T] (respectively).
  • insert_col(), remove_col(), insert_row(), and remove_row() implementations with good performance.

Extras

  • translate_with_wrap() (scroll), flip_rows(), and flip_cols() operations.
  • sort_by_row() and sort_by_col() operations.

TODO

  • Robustness - check for zero rows/cols (div/mod, etc.).
  • Range operators that return a TooDeeView[Mut]?
  • Implement nth() and nth_back() for FlattenExact.
  • More documentation, with examples.
  • tiles(..) and tiles_mut()?
  • Pathfinding algorithms?

Motivation

Similar libraries do exist, but they lacked either performance, flexibility, or functionality.

Here's a small feature comparison chart:

Goals

  • High performance and good flexibility, with the constraint of using a 1-D vector.
  • Suitable for use in image processing, but not restricted to this problem domain.
  • Provide solid implementations of non-trivial 2D operations.

Non-goals

  • GPU integration

Limitations

  • Views are not nested for the time being, The only impact is that the bounds() of a view are always relative to the underlying TooDee array.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.