v0.4.0
rewrite to make invalid states impossible to represent
previously RangeOrCell had a ton of different combinations and had
some possible invalid states if you used a mix of from=RowRelative and
to=ColumnRelative or vice versa. This splits the RangeOrCell into
more distinct states where you can't mix a row or column reference.
This came with a lot of other implications and nice to haves:
-
iterators for iterating the cells or rows between a range. the rules
are different for each type but intuitive -
IntoandAsRefimplementations for efficiently converting values
between the types. the general rules:-
Things at the bottom (most specific) of the tree (
Adress,Column
&Row) can.into()upwards to aRangeOrCellor anA1 -
AsRefto access the underlying rows or columns without allocating.
When possible functions take anAsRef<Column>which can be either
aColumnorAddress
-
-
Dedicated
RowandColumntypes which can implement Ord, Eq,
PartialEq and lots of other useful algebraic traits -
support for non-contiguous ranges. "A1", "A:B", "C:C" for example
-
contains()actually works (inclusively) -
no more need for builders. with all the different
newfns and from
and into impls there isn't really a need for a builder pattern