Enable cast lints
This commit is contained in:
parent
b7cd6aa272
commit
7d242e1999
4 changed files with 48 additions and 38 deletions
|
|
@ -144,18 +144,26 @@ where
|
|||
Operation::Insert { .. } | Operation::Equal { .. }
|
||||
);
|
||||
|
||||
let original_length = operation.len() as isize;
|
||||
let original_length = operation.len();
|
||||
let result = match side {
|
||||
Side::Left => {
|
||||
let result = operation.merge_operations(&mut last_other_op);
|
||||
|
||||
if let ref op @ (Operation::Insert { .. } | Operation::Equal { .. }) = result {
|
||||
let shift = merged_length as isize - seen_left_length as isize
|
||||
+ op.len() as isize
|
||||
- original_length;
|
||||
// Calculate shift using safe casts - preserving original logic
|
||||
let merged_length_signed =
|
||||
isize::try_from(merged_length).unwrap_or(isize::MAX);
|
||||
let seen_left_length_signed =
|
||||
isize::try_from(seen_left_length).unwrap_or(isize::MAX);
|
||||
let op_len_signed = isize::try_from(op.len()).unwrap_or(isize::MAX);
|
||||
let original_length_signed =
|
||||
isize::try_from(original_length).unwrap_or(isize::MAX);
|
||||
|
||||
let shift = merged_length_signed - seen_left_length_signed + op_len_signed
|
||||
- original_length_signed;
|
||||
|
||||
while let Some(cursor) = left_cursors.next_if(|cursor| {
|
||||
cursor.char_index <= seen_left_length + original_length as usize
|
||||
cursor.char_index <= seen_left_length + original_length
|
||||
}) {
|
||||
merged_cursors.push(
|
||||
cursor.with_index(cursor.char_index.saturating_add_signed(shift)),
|
||||
|
|
@ -164,7 +172,7 @@ where
|
|||
}
|
||||
|
||||
if is_advancing_operation {
|
||||
seen_left_length += original_length as usize;
|
||||
seen_left_length += original_length;
|
||||
}
|
||||
|
||||
maybe_left_op = left_iter.next();
|
||||
|
|
@ -176,12 +184,20 @@ where
|
|||
let result = operation.merge_operations(&mut last_other_op);
|
||||
|
||||
if let ref op @ (Operation::Insert { .. } | Operation::Equal { .. }) = result {
|
||||
let shift = merged_length as isize - seen_right_length as isize
|
||||
+ op.len() as isize
|
||||
- original_length;
|
||||
// Calculate shift using safe casts - preserving original logic
|
||||
let merged_length_signed =
|
||||
isize::try_from(merged_length).unwrap_or(isize::MAX);
|
||||
let seen_right_length_signed =
|
||||
isize::try_from(seen_right_length).unwrap_or(isize::MAX);
|
||||
let op_len_signed = isize::try_from(op.len()).unwrap_or(isize::MAX);
|
||||
let original_length_signed =
|
||||
isize::try_from(original_length).unwrap_or(isize::MAX);
|
||||
|
||||
let shift = merged_length_signed - seen_right_length_signed + op_len_signed
|
||||
- original_length_signed;
|
||||
|
||||
while let Some(cursor) = right_cursors.next_if(|cursor| {
|
||||
cursor.char_index <= seen_right_length + original_length as usize
|
||||
cursor.char_index <= seen_right_length + original_length
|
||||
}) {
|
||||
merged_cursors.push(
|
||||
cursor.with_index(cursor.char_index.saturating_add_signed(shift)),
|
||||
|
|
@ -190,7 +206,7 @@ where
|
|||
}
|
||||
|
||||
if is_advancing_operation {
|
||||
seen_right_length += original_length as usize;
|
||||
seen_right_length += original_length;
|
||||
}
|
||||
|
||||
maybe_right_op = right_iter.next();
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ where
|
|||
*last_delete_order + *last_delete_deleted_character_count;
|
||||
|
||||
let new_length = deleted_character_count
|
||||
.min(0.max(operation_end_index as i64 - last_delete_end_index as i64) as usize);
|
||||
.min(operation_end_index.saturating_sub(last_delete_end_index));
|
||||
|
||||
let overlap = deleted_character_count - new_length;
|
||||
|
||||
|
|
@ -282,30 +282,21 @@ where
|
|||
let last_delete_end_index =
|
||||
*last_delete_order + *last_delete_deleted_character_count;
|
||||
|
||||
let overlap =
|
||||
0.max((length as i64).min(last_delete_end_index as i64 - order as i64));
|
||||
let overlap = length.min(last_delete_end_index.saturating_sub(order));
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
let updated_equal = text.as_ref().map_or_else(
|
||||
|| {
|
||||
Operation::create_equal(
|
||||
order + overlap as usize,
|
||||
(length as i64 - overlap) as usize,
|
||||
)
|
||||
},
|
||||
|| Operation::create_equal(order + overlap, length - overlap),
|
||||
|text| {
|
||||
Operation::create_equal_with_text(
|
||||
order + overlap as usize,
|
||||
text.chars().skip(overlap as usize).collect::<String>(),
|
||||
order + overlap,
|
||||
text.chars().skip(overlap).collect::<String>(),
|
||||
)
|
||||
},
|
||||
);
|
||||
|
||||
#[cfg(not(debug_assertions))]
|
||||
let updated_equal = Operation::create_equal(
|
||||
order + overlap as usize,
|
||||
(length as i64 - overlap) as usize,
|
||||
);
|
||||
let updated_equal = Operation::create_equal(order + overlap, length - overlap);
|
||||
|
||||
updated_equal
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue