mirror of
https://github.com/kristoferssolo/traxor.git
synced 2026-02-04 06:42:04 +00:00
refactor(merge): use existing merge create
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
use crate::merge::Merge;
|
||||
use derive_macro::Merge;
|
||||
use merge::Merge;
|
||||
use ratatui::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Merge)]
|
||||
pub struct ColorsConfig {
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub highlight_background: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub highlight_foreground: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub warning_foreground: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub info_foreground: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub error_foreground: Option<String>,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,37 @@
|
||||
use crate::merge::Merge;
|
||||
use derive_macro::Merge;
|
||||
use merge::Merge;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Merge)]
|
||||
pub struct KeybindsConfig {
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub quit: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub next_tab: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub prev_tab: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub next_torrent: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub prev_torrent: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub switch_tab_1: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub switch_tab_2: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub switch_tab_3: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub toggle_torrent: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub toggle_all: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub delete: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub delete_force: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub select: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub toggle_help: Option<String>,
|
||||
#[merge(strategy = merge::option::overwrite_none)]
|
||||
pub move_torrent: Option<String>,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
mod colors;
|
||||
mod keybinds;
|
||||
|
||||
use crate::merge::Merge;
|
||||
use color_eyre::Result;
|
||||
use colors::ColorsConfig;
|
||||
use derive_macro::Merge;
|
||||
use keybinds::KeybindsConfig;
|
||||
use merge::Merge;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::path::PathBuf;
|
||||
|
||||
|
||||
@@ -3,6 +3,5 @@ pub mod config;
|
||||
pub mod event;
|
||||
pub mod handler;
|
||||
pub mod log;
|
||||
pub mod merge;
|
||||
pub mod tui;
|
||||
pub mod ui;
|
||||
|
||||
21
src/merge.rs
21
src/merge.rs
@@ -1,21 +0,0 @@
|
||||
pub trait Merge {
|
||||
fn merge(&mut self, other: Self);
|
||||
}
|
||||
|
||||
impl Merge for String {
|
||||
fn merge(&mut self, other: Self) {
|
||||
*self = other;
|
||||
}
|
||||
}
|
||||
|
||||
impl Merge for u32 {
|
||||
fn merge(&mut self, other: Self) {
|
||||
*self = other;
|
||||
}
|
||||
}
|
||||
|
||||
impl Merge for bool {
|
||||
fn merge(&mut self, other: Self) {
|
||||
*self = other;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user