From 634393ba4a65b0333ecb477365a4f2bde5628a43 Mon Sep 17 00:00:00 2001 From: timofey Date: Fri, 16 Jun 2023 22:13:08 +0000 Subject: [PATCH] `PartialOrd` -> `Ord` --- src/flow/comparator.rs | 14 ++++++-------- src/mrds/trees/avl.rs | 14 +++++++------- src/mrds/trees/heighted.rs | 12 ++++++------ 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/flow/comparator.rs b/src/flow/comparator.rs index c7c2a6c..ef21443 100644 --- a/src/flow/comparator.rs +++ b/src/flow/comparator.rs @@ -19,17 +19,15 @@ pub trait Comparator { fn pick_smaller(&self, kl: &A, kr: &A) -> Comparison; } -/// Implementation of a [Comparator] relying on [`PartialOrd`]. +/// Implementation of a [Comparator] relying on [`Ord`]. pub struct DefaultComparator; -impl Comparator for DefaultComparator { +impl Comparator for DefaultComparator { fn pick_smaller(&self, kl: &A, kr: &A) -> Comparison { - if kl < kr { - Comparison::L - } else if kr < kl { - Comparison::R - } else { - Comparison::E + match kl.cmp(kr) { + std::cmp::Ordering::Less => Comparison::L, + std::cmp::Ordering::Equal => Comparison::E, + std::cmp::Ordering::Greater => Comparison::R, } } } diff --git a/src/mrds/trees/avl.rs b/src/mrds/trees/avl.rs index bd187c5..76ca655 100644 --- a/src/mrds/trees/avl.rs +++ b/src/mrds/trees/avl.rs @@ -100,7 +100,7 @@ impl<'a, A: 'a> FunctorContext<'a> for AvlTs { type T = instances::solo::SoloInstance; } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTrees<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTrees<'a> for AvlTs { type Node = AvlN; type Reference = AvlR; @@ -137,7 +137,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTrees<'a> for AvlTs { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesTreeOf<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTreesTreeOf<'a> for AvlTs { fn tree_of(&self, node: Self::Node) -> BTWrap<'a, Self, Self::Tree> { AvlT { height: std::cmp::max(node.l.height, node.r.height) @@ -148,7 +148,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesTreeOf<'a> for AvlTs { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesEmpty<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTreesEmpty<'a> for AvlTs { fn empty(&self) -> Self::Tree { AvlT { reference: None, @@ -165,7 +165,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesEmpty<'a> for AvlTs { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesMutable<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTreesMutable<'a> for AvlTs { fn join_key( self, tl: Self::Tree, @@ -176,7 +176,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesMutable<'a> for AvlTs { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesHeight<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTreesHeight<'a> for AvlTs { fn height(&self, tree: &Self::Tree) -> u64 { tree.height } @@ -186,7 +186,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesHeight<'a> for AvlTs { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesTryJoin<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTreesTryJoin<'a> for AvlTs { fn try_join( &self, tl: Self::Tree, @@ -197,7 +197,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesTryJoin<'a> for AvlTs { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesBindable<'a> for AvlTs { +impl<'a, A: 'a + Ord + Clone> BinaryTreesBindable<'a> for AvlTs { fn bounds_error(&self, _error: bounds::BoundsError) -> BTWrap<'a, Self, T> { panic!("bounds violated."); } diff --git a/src/mrds/trees/heighted.rs b/src/mrds/trees/heighted.rs index 1201006..b6820d1 100644 --- a/src/mrds/trees/heighted.rs +++ b/src/mrds/trees/heighted.rs @@ -80,7 +80,7 @@ impl<'a, A: 'a> FunctorContext<'a> for Trees { type T = instances::solo::SoloInstance; } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTrees<'a> for Trees { +impl<'a, A: 'a + Ord + Clone> BinaryTrees<'a> for Trees { type Node = Node; type Reference = Reference; @@ -114,7 +114,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTrees<'a> for Trees { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesHeight<'a> for Trees { +impl<'a, A: 'a + Ord + Clone> BinaryTreesHeight<'a> for Trees { fn height(&self, tree: &Self::Tree) -> u64 { tree.height } @@ -124,7 +124,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesHeight<'a> for Trees { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesEmpty<'a> for Trees { +impl<'a, A: 'a + Ord + Clone> BinaryTreesEmpty<'a> for Trees { fn empty(&self) -> Self::Tree { Tree { reference: None, @@ -141,7 +141,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesEmpty<'a> for Trees { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesTryJoin<'a> for Trees { +impl<'a, A: 'a + Ord + Clone> BinaryTreesTryJoin<'a> for Trees { fn try_join( &self, tl: Self::Tree, @@ -152,7 +152,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesTryJoin<'a> for Trees { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesUnbalanced<'a> for Trees { +impl<'a, A: 'a + Ord + Clone> BinaryTreesUnbalanced<'a> for Trees { fn tree_of_with_height(&self, node: Self::Node, height: u64) -> BTWrap<'a, Self, Self::Tree> { Tree { reference: Some(Reference { @@ -167,7 +167,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesUnbalanced<'a> for Trees { } } -impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesBindable<'a> for Trees { +impl<'a, A: 'a + Ord + Clone> BinaryTreesBindable<'a> for Trees { fn bounds_error(&self, _error: bounds::BoundsError) -> BTWrap<'a, Self, T> { panic!("bounds violated."); }