From 007493f136a72679af2a07f94c9a5278bb699c53 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 8 Apr 2023 15:40:14 +0200 Subject: [PATCH] Derive more traits for widgets --- src/buffer.rs | 2 +- src/widgets/editor.rs | 2 ++ src/widgets/join.rs | 3 +++ src/widgets/layer.rs | 2 ++ src/widgets/predrawn.rs | 1 + src/widgets/resize.rs | 1 + 6 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/buffer.rs b/src/buffer.rs index 1a73c80..094a143 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -90,7 +90,7 @@ impl StackFrame { } } -#[derive(Debug, Default)] +#[derive(Debug, Default, Clone)] pub struct Buffer { size: Size, data: Vec, diff --git a/src/widgets/editor.rs b/src/widgets/editor.rs index cc30330..893d4da 100644 --- a/src/widgets/editor.rs +++ b/src/widgets/editor.rs @@ -20,6 +20,7 @@ fn wrap(widthdb: &mut WidthDb, text: &str, width: usize) -> Vec { // State // /////////// +#[derive(Debug, Clone)] pub struct EditorState { text: String, @@ -339,6 +340,7 @@ impl Default for EditorState { // Widget // //////////// +#[derive(Debug)] pub struct Editor<'a> { state: &'a mut EditorState, highlighted: Styled, diff --git a/src/widgets/join.rs b/src/widgets/join.rs index 900cd19..20cd413 100644 --- a/src/widgets/join.rs +++ b/src/widgets/join.rs @@ -229,6 +229,7 @@ fn shrink(mut segments: Vec<&mut Segment>, mut available: u16) { } } +#[derive(Debug, Clone, Copy)] pub struct JoinSegment { pub inner: I, weight: f32, @@ -353,6 +354,7 @@ fn sum_major_max_minor(segments: &[Segment]) -> (u16, u16) { (major, minor) } +#[derive(Debug, Clone)] pub struct Join { horizontal: bool, segments: Vec>, @@ -511,6 +513,7 @@ macro_rules! mk_join { $( pub $arg:ident: $type:ident [$n:expr], )+ } ) => { + #[derive(Debug, Clone, Copy)] pub struct $name< $($type),+ >{ horizontal: bool, $( pub $arg: JoinSegment<$type>, )+ diff --git a/src/widgets/layer.rs b/src/widgets/layer.rs index b6f4916..af3da5e 100644 --- a/src/widgets/layer.rs +++ b/src/widgets/layer.rs @@ -2,6 +2,7 @@ use async_trait::async_trait; use crate::{AsyncWidget, Frame, Size, Widget, WidthDb}; +#[derive(Debug, Clone)] pub struct Layer { layers: Vec, } @@ -73,6 +74,7 @@ macro_rules! mk_layer { $( pub $arg:ident: $type:ident, )+ } ) => { + #[derive(Debug, Clone, Copy)] pub struct $name< $($type),+ >{ $( pub $arg: $type, )+ } diff --git a/src/widgets/predrawn.rs b/src/widgets/predrawn.rs index e11d9f8..e4f594a 100644 --- a/src/widgets/predrawn.rs +++ b/src/widgets/predrawn.rs @@ -5,6 +5,7 @@ use async_trait::async_trait; use crate::buffer::Buffer; use crate::{AsyncWidget, Frame, Pos, Size, Style, Styled, Widget, WidthDb}; +#[derive(Debug, Clone)] pub struct Predrawn { buffer: Buffer, } diff --git a/src/widgets/resize.rs b/src/widgets/resize.rs index 91bb84a..5a92e05 100644 --- a/src/widgets/resize.rs +++ b/src/widgets/resize.rs @@ -2,6 +2,7 @@ use async_trait::async_trait; use crate::{AsyncWidget, Frame, Size, Widget, WidthDb}; +#[derive(Debug, Clone, Copy)] pub struct Resize { pub inner: I, pub min_width: Option,