From 32eb1bf0852861408729ba1be0f2ea35b303f503 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 14 Dec 2024 23:24:07 +0100 Subject: [PATCH] add has_phrase --- crates/tek/src/api/phrase.rs | 8 ++++++++ crates/tek/src/tui/phrase_list.rs | 7 +------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/tek/src/api/phrase.rs b/crates/tek/src/api/phrase.rs index aa1f437a..1fed237d 100644 --- a/crates/tek/src/api/phrase.rs +++ b/crates/tek/src/api/phrase.rs @@ -18,6 +18,14 @@ pub trait HasPhrase { fn phrase (&self) -> &Arc>; } +#[macro_export] macro_rules! has_phrase { + (|$self:ident:$Struct:ident$(<$($L:lifetime),*$($T:ident$(:$U:path)?),*>)?|$cb:expr) => { + impl $(<$($L),*$($T $(: $U)?),*>)? HasPhrase for $Struct $(<$($L),*$($T),*>)? { + fn phrase (&$self) -> &Arc> { &$cb } + } + } +} + #[derive(Clone, Debug, PartialEq)] pub enum PhrasePoolCommand { Add(usize, Phrase), diff --git a/crates/tek/src/tui/phrase_list.rs b/crates/tek/src/tui/phrase_list.rs index 972d62d5..8bb886ee 100644 --- a/crates/tek/src/tui/phrase_list.rs +++ b/crates/tek/src/tui/phrase_list.rs @@ -181,12 +181,7 @@ impl From<&Arc>> for PhraseListModel { } has_phrases!(|self:PhraseListModel|self.phrases); - -impl HasPhrase for PhraseListModel { - fn phrase (&self) -> &Arc> { - &self.phrases[self.phrase_index()] - } -} +has_phrase!(|self:PhraseListModel|self.phrases[self.phrase_index()]); impl PhraseListModel { pub(crate) fn phrase_index (&self) -> usize {