pub struct AxisMove {
pub axis: Axis,
pub start: u32,
pub end: u32,
pub at: u32,
}Expand description
A row or column relocation on a single sheet: moves the contiguous band
start..=end (1-based, inclusive) so its first row/column lands at at
(1-based) after the move — Sheets’ own convention: “move rows 5:7 to row
2” means the band’s new start is row 2, in either direction.
Unlike GridEdit, nothing is created or destroyed: every coordinate on
axis maps to exactly one output coordinate (see [move_coord]).
A move is backward when at < start and forward when at > end. at
landing inside the band itself (start..=end) is a no-op — see the
module doc. start == 0 or at == 0 is rejected (rows/columns are
1-based); start > end is rejected as a malformed band.
A well-formed AxisMove also has end itself within the sheet’s grid
bounds — that precondition is on the caller, the same way it is on
start <= end. [shift_refs_for_move] validates the destination
footprint (at ..= at + width - 1) against the axis maximum, since an
out-of-bounds destination is the one thing a move can newly request that
insert/delete cannot, but it does not separately re-validate end
against that maximum: an end already past the grid could only reach
this function from a caller that mis-described the sheet’s own state.
Fields§
§axis: Axis§start: u32§end: u32§at: u32