From b0d8d9f0bfdbb4f4a43f9a59806f8e84bbaf4e30 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Fri, 15 Nov 2024 14:40:44 -0700 Subject: [PATCH] feat(TreeItem): Added PartialEq and Eq constraints to the types that can be passed to the TreeItem struct --- src/flatten.rs | 6 +++--- src/lib.rs | 8 ++++---- src/tree_item.rs | 6 +++--- src/tree_state.rs | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/flatten.rs b/src/flatten.rs index 1a93a62..10f5625 100644 --- a/src/flatten.rs +++ b/src/flatten.rs @@ -10,7 +10,7 @@ use std::hash::Hash; #[must_use] pub struct Flattened<'a, T> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { pub identifier: Vec, pub item: &'a TreeItem, @@ -18,7 +18,7 @@ where impl<'a, T> Flattened<'a, T> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { /// Zero based depth. Depth 0 means top level with 0 indentation. #[must_use] @@ -37,7 +37,7 @@ pub fn flatten<'a, T>( current: &[u64], ) -> Vec> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { let mut result = Vec::new(); for item in items { diff --git a/src/lib.rs b/src/lib.rs index 23c0b2e..e9f1105 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -53,7 +53,7 @@ mod tree_state; #[derive(Debug, Clone)] pub struct Tree<'a, T> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { items: &'a [TreeItem], @@ -77,7 +77,7 @@ where impl<'a, T> Tree<'a, T> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { /// Create a new `Tree`. /// @@ -167,7 +167,7 @@ fn tree_new_errors_with_duplicate_identifiers() { impl<'a, T> StatefulWidget for Tree<'a, T> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { type State = TreeState; @@ -336,7 +336,7 @@ where impl<'a, T> Widget for Tree<'a, T> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { fn render(self, area: Rect, buf: &mut Buffer) { let mut state = TreeState::default(); diff --git a/src/tree_item.rs b/src/tree_item.rs index 52aa6b4..455bab9 100644 --- a/src/tree_item.rs +++ b/src/tree_item.rs @@ -34,10 +34,10 @@ use std::hash::{DefaultHasher, Hash, Hasher}; /// let b = TreeItem::new("Root", vec![a])?; /// # Ok::<(), std::io::Error>(()) /// ``` -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct TreeItem where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { pub(super) identifier: u64, pub(super) content: T, @@ -46,7 +46,7 @@ where impl TreeItem where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { /// Create a new `TreeItem` with children. /// diff --git a/src/tree_state.rs b/src/tree_state.rs index f8e0d09..4877680 100644 --- a/src/tree_state.rs +++ b/src/tree_state.rs @@ -58,7 +58,7 @@ impl TreeState { #[must_use] pub fn flatten<'a, T>(&self, items: &'a [TreeItem]) -> Vec> where - T: ToText + Clone + Default + Display + Hash, + T: ToText + Clone + Default + Display + Hash + PartialEq + Eq, { flatten(&self.opened, items, &[]) }