Import Debug instead of full reference

This commit is contained in:
Andras Schmelczer 2025-06-29 15:57:04 +01:00
parent c1aa8fe463
commit d23fad5382
8 changed files with 29 additions and 18 deletions

View file

@ -2,6 +2,7 @@ mod cursor;
mod edited_text;
mod operation;
mod utils;
use std::fmt::Debug;
pub use cursor::{CursorPosition, TextWithCursors};
pub use edited_text::EditedText;
@ -49,7 +50,7 @@ pub fn reconcile_with_tokenizer<'a, F, T>(
tokenizer: &Tokenizer<T>,
) -> TextWithCursors<'static>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
let left_operations =
EditedText::from_strings_with_tokenizer(original, left, tokenizer, Side::Left);

View file

@ -1,3 +1,5 @@
use std::fmt::Debug;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
@ -27,7 +29,7 @@ use crate::{
#[derive(Debug, Clone, PartialEq, Default)]
pub struct EditedText<'a, T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
text: &'a str,
operations: Vec<Operation<T>>,
@ -49,7 +51,7 @@ impl<'a> EditedText<'a, String> {
impl<'a, T> EditedText<'a, T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
/// Create an `EditedText` from the given original (old) and updated (new)
/// strings. The returned `EditedText` represents the changes from the

View file

@ -16,7 +16,7 @@ use crate::{
#[derive(Clone, PartialEq)]
pub enum Operation<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
Equal {
order: usize,
@ -46,7 +46,7 @@ where
impl<T> Operation<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
/// Creates an equal operation with the given index.
/// This operation is used to indicate that the text at the given index
@ -332,7 +332,7 @@ where
impl<T> Display for Operation<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
@ -400,7 +400,7 @@ where
impl<T> Debug for Operation<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{self}") }
}

View file

@ -1,3 +1,5 @@
use std::fmt::Debug;
use crate::{operation_transformation::Operation, raw_operation::RawOperation, utils::side::Side};
/// Turn raw operations into ordered operations while keeping track of the
@ -5,7 +7,7 @@ use crate::{operation_transformation::Operation, raw_operation::RawOperation, ut
pub fn cook_operations<I, T>(raw_operations: I, side: Side) -> impl Iterator<Item = Operation<T>>
where
I: IntoIterator<Item = RawOperation<T>>,
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
let mut original_text_index = 0; // this is the start index of the operation on the original text

View file

@ -1,4 +1,5 @@
use core::iter;
use std::fmt::Debug;
use crate::raw_operation::RawOperation;
@ -8,7 +9,7 @@ use crate::raw_operation::RawOperation;
pub fn elongate_operations<I, T>(raw_operations: I) -> Vec<RawOperation<T>>
where
I: IntoIterator<Item = RawOperation<T>>,
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
// This might look bad, but this makes sense. The inserts and deltes can be
// interleaved, such as: IDIDID and we need to turn this into IIIDDD.

View file

@ -1,3 +1,5 @@
use std::fmt::Debug;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
@ -12,7 +14,7 @@ use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
pub struct Token<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
/// The normalised form of the token used deriving the diff.
normalised: T,
@ -35,7 +37,7 @@ impl From<&str> for Token<String> {
impl<T> Token<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
pub fn new(
normalised: T,
@ -62,7 +64,7 @@ where
impl<T> PartialEq for Token<T>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
fn eq(&self, other: &Self) -> bool { self.normalised == other.normalised }
}

View file

@ -1,7 +1,9 @@
use std::fmt::Debug;
use crate::Token;
/// Given two lists of tokens, returns `length` where `old` list somewhere
/// within contains the `length` prefix of the `new` list.
/// Given two lists of tokens, returns `length` where the `old` list
/// somewhere within contains the `length` prefix of the `new` list.
///
/// ## Example
///
@ -25,7 +27,7 @@ use crate::Token;
/// > results in a length of 1
pub fn find_longest_prefix_contained_within<T>(old: &[Token<T>], new: &[Token<T>]) -> usize
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
let max_possible = new.len().min(old.len());

View file

@ -20,6 +20,7 @@
//! For potential improvements here see [similar#15](https://github.com/mitsuhiko/similar/issues/15).
use std::{
fmt::Debug,
ops::{Index, IndexMut, Range},
vec,
};
@ -38,7 +39,7 @@ use crate::{
/// The returned `RawOperations` each wrap a single token.
pub fn myers_diff<T>(old: &[Token<T>], new: &[Token<T>]) -> Vec<RawOperation<T>>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
let max_d = (old.len() + new.len()).div_ceil(2) + 1;
let mut vb = V::new(max_d);
@ -130,7 +131,7 @@ fn find_middle_snake<T>(
vb: &mut V,
) -> Option<(usize, usize)>
where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
let n = old_range.len();
let m = new_range.len();
@ -236,7 +237,7 @@ fn conquer<T>(
vb: &mut V,
result: &mut Vec<RawOperation<T>>,
) where
T: PartialEq + Clone + std::fmt::Debug,
T: PartialEq + Clone + Debug,
{
// Check for common prefix
let common_prefix_len = common_prefix_len(old, old_range.clone(), new, new_range.clone());