From 96a0e9f9d6271c1efc6380d69653ee8f817df5d3 Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sun, 9 Jun 2019 23:57:47 +0200 Subject: [PATCH] add type coercion helper to ListItem objects --- src/album.rs | 4 ++++ src/artist.rs | 4 ++++ src/playlist.rs | 4 ++++ src/track.rs | 4 ++++ src/traits.rs | 2 ++ 5 files changed, 18 insertions(+) diff --git a/src/album.rs b/src/album.rs index 93016d4..fe6d6c7 100644 --- a/src/album.rs +++ b/src/album.rs @@ -150,6 +150,10 @@ impl ListItem for Album { } } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { format!("{}", self) } diff --git a/src/artist.rs b/src/artist.rs index 603ab24..010f16c 100644 --- a/src/artist.rs +++ b/src/artist.rs @@ -139,6 +139,10 @@ impl ListItem for Artist { } } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { format!("{}", self) } diff --git a/src/playlist.rs b/src/playlist.rs index 5682763..74edbf3 100644 --- a/src/playlist.rs +++ b/src/playlist.rs @@ -107,6 +107,10 @@ impl ListItem for Playlist { } } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { self.name.clone() } diff --git a/src/track.rs b/src/track.rs index ecff57b..d0008e3 100644 --- a/src/track.rs +++ b/src/track.rs @@ -151,6 +151,10 @@ impl ListItem for Track { current.map(|t| t.id == self.id).unwrap_or(false) } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { format!("{}", self) } diff --git a/src/traits.rs b/src/traits.rs index 7fde625..7fc23ec 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -28,6 +28,8 @@ pub trait ListItem: Sync + Send + 'static { fn artist(&self) -> Option { None } + + fn as_listitem(&self) -> Box; } pub trait ViewExt: View {