- Fixed heap buffer overflow in DrainCol destructor - thanks George Androutsopoulos.
- Comparison (vs) benchmarks added
- Breaking change: Removed the
bounds()
function due to additional complexity and limited value.
serde
integration
- Check for multiply overflow when creating
TooDee
orTooDeeView
objects. - Clippy fixes
- Now using the 2021 Rust edition
- Consistency improvement: only increment rows (for
insert_row
) and cols (forinsert_col
) if data was actually inserted.
- Now requires rustc >= 1.50 to build
- Fix for issue #13 (Panic Safety and soundness issue in
insert_row
) - Fixed panic safety and soundness issues in
insert_col
, and reduced the number of times it callsptr::copy
- Uses the stabilised
slice_fill
feature - Uses the stabilised
bool::then
function in some scenarios - Replaced some
Into
implementations withFrom
implementations - Minor test case tidy up
- The
Col
andColMut
iterators are now indexable.
- Introduced
get_unchecked()
andget_unchecked_mut()
functions for faster (unsafe) access
- Use of slice.get_unchecked() and slice.get_unchecked_mut() where possible for overall performance improvement
- Performance improvements to
TooDeeOpsMut.swap_rows()
and theSortOps
- Minor code style improvements
- Small documentation updates
- Re-organised fields within structs (data/vec fields specified first)
TooDee
now has derivedHash
,Eq
, andPartialEq
implementations- Added
Into<Box<[T]>>
andAsRef<Vec<T>>
implementations
- Lots more documentation, with examples.
- Various performance improvements by leveraging unsafe (lookup cell by
Coordinate
,insert_row()
,insert_col()
) - Performance enhancements and potentially breaking changes to
remove_col()
andremove_row()
(minor alterations to method signatures)
- Improved performance of
SortOps
functions, particularlysort_by_row
and variants. - More documentation improvements
- Added
Index<Coordinate>
andIndexMut<Coordinate>
implementations
- Fixed divide by zero bug in size_hint() when there were zero columns
- Improved documentation of
TooDee<T>
, and added some examples
- Added custom
Default
implementation forTooDee<T>
to allow construction whenT
does not implementDefault
. - Added
IntoIterator
implementation forTooDee<T>