summaryrefslogtreecommitdiff
path: root/src/layout/tree.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-08-21 16:38:51 +0200
committerLaurenz <laurmaedje@gmail.com>2021-08-21 17:30:21 +0200
commit0dd4ae0a7ac0c247078df492469ff20b8a90c886 (patch)
tree07a55343b9ccab3fe76b0f1b0de9d1be310d8b14 /src/layout/tree.rs
parentf38eb10c2b54bd13ccef119454839f6a66448462 (diff)
Prune derives
Diffstat (limited to 'src/layout/tree.rs')
-rw-r--r--src/layout/tree.rs60
1 files changed, 3 insertions, 57 deletions
diff --git a/src/layout/tree.rs b/src/layout/tree.rs
index 1899a4d2..05f94c38 100644
--- a/src/layout/tree.rs
+++ b/src/layout/tree.rs
@@ -1,7 +1,6 @@
use super::*;
use std::any::Any;
-use std::fmt::{self, Debug, Formatter};
#[cfg(feature = "layout-cache")]
use std::hash::{Hash, Hasher};
@@ -10,7 +9,6 @@ use std::hash::{Hash, Hasher};
use fxhash::FxHasher64;
/// A tree of layout nodes.
-#[derive(Debug, Clone, Eq, PartialEq)]
pub struct LayoutTree {
/// Runs of pages with the same properties.
pub runs: Vec<PageRun>,
@@ -24,7 +22,6 @@ impl LayoutTree {
}
/// A run of pages that all have the same properties.
-#[derive(Debug, Clone, Eq, PartialEq)]
pub struct PageRun {
/// The size of each page.
pub size: Size,
@@ -47,7 +44,7 @@ impl PageRun {
/// A dynamic layouting node.
pub struct LayoutNode {
- node: Box<dyn Bounds>,
+ node: Box<dyn Layout>,
#[cfg(feature = "layout-cache")]
hash: u64,
}
@@ -57,7 +54,7 @@ impl LayoutNode {
#[cfg(not(feature = "layout-cache"))]
pub fn new<T>(node: T) -> Self
where
- T: Layout + Debug + Clone + Eq + PartialEq + 'static,
+ T: Layout + 'static,
{
Self { node: Box::new(node) }
}
@@ -66,7 +63,7 @@ impl LayoutNode {
#[cfg(feature = "layout-cache")]
pub fn new<T>(node: T) -> Self
where
- T: Layout + Debug + Clone + Eq + PartialEq + Hash + 'static,
+ T: Layout + Hash + 'static,
{
let hash = {
let mut state = FxHasher64::default();
@@ -99,60 +96,9 @@ impl Layout for LayoutNode {
}
}
-impl Debug for LayoutNode {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- self.node.fmt(f)
- }
-}
-
-impl Clone for LayoutNode {
- fn clone(&self) -> Self {
- Self {
- node: self.node.dyn_clone(),
- #[cfg(feature = "layout-cache")]
- hash: self.hash,
- }
- }
-}
-
-impl Eq for LayoutNode {}
-
-impl PartialEq for LayoutNode {
- fn eq(&self, other: &Self) -> bool {
- self.node.dyn_eq(other.node.as_ref())
- }
-}
-
#[cfg(feature = "layout-cache")]
impl Hash for LayoutNode {
fn hash<H: Hasher>(&self, state: &mut H) {
state.write_u64(self.hash);
}
}
-
-trait Bounds: Layout + Debug + 'static {
- fn as_any(&self) -> &dyn Any;
- fn dyn_eq(&self, other: &dyn Bounds) -> bool;
- fn dyn_clone(&self) -> Box<dyn Bounds>;
-}
-
-impl<T> Bounds for T
-where
- T: Layout + Debug + Eq + PartialEq + Clone + 'static,
-{
- fn as_any(&self) -> &dyn Any {
- self
- }
-
- fn dyn_eq(&self, other: &dyn Bounds) -> bool {
- if let Some(other) = other.as_any().downcast_ref::<Self>() {
- self == other
- } else {
- false
- }
- }
-
- fn dyn_clone(&self) -> Box<dyn Bounds> {
- Box::new(self.clone())
- }
-}