Fix Clone impl marked todo on Pagination

- Fixed a manual implementation of Clone on Pagination (needed extra
  trait bounds to be derivable)
- Made clippy happy :)
This commit is contained in:
Thomas
2022-10-19 22:02:39 +02:00
committed by GitHub
parent 05d221aada
commit 6a5efb1052
4 changed files with 6 additions and 17 deletions

View File

@@ -82,7 +82,7 @@ impl Layout {
}
pub fn screen<S: Into<String>, T: IntoBoxedViewExt>(mut self, id: S, view: T) -> Self {
(&mut self).add_screen(id, view);
self.add_screen(id, view);
self
}

View File

@@ -57,7 +57,7 @@ impl<I: ListItem> Scroller for ListView<I> {
}
}
impl<I: ListItem> ListView<I> {
impl<I: ListItem + Clone> ListView<I> {
pub fn new(content: Arc<RwLock<Vec<I>>>, queue: Arc<Queue>, library: Arc<Library>) -> Self {
let result = Self {
content,
@@ -178,7 +178,7 @@ impl<I: ListItem> ListView<I> {
}
}
impl<I: ListItem> View for ListView<I> {
impl<I: ListItem + Clone> View for ListView<I> {
fn draw(&self, printer: &Printer<'_, '_>) {
let content = self.content.read().unwrap();

View File

@@ -92,6 +92,7 @@ pub type Paginator<I> = Box<dyn Fn(Arc<RwLock<Vec<I>>>) + Send + Sync>;
/// `max_content`: The maximum amount of items
/// `callback`: TODO: document
/// `busy`: TODO: document
#[derive(Clone)]
pub struct Pagination<I: ListItem> {
loaded_content: Arc<RwLock<usize>>,
max_content: Arc<RwLock<Option<usize>>>,
@@ -110,19 +111,7 @@ impl<I: ListItem> Default for Pagination<I> {
}
}
// TODO: figure out why deriving Clone doesn't work
impl<I: ListItem> Clone for Pagination<I> {
fn clone(&self) -> Self {
Pagination {
loaded_content: self.loaded_content.clone(),
max_content: self.max_content.clone(),
callback: self.callback.clone(),
busy: self.busy.clone(),
}
}
}
impl<I: ListItem> Pagination<I> {
impl<I: ListItem + Clone> Pagination<I> {
pub fn clear(&mut self) {
*self.max_content.write().unwrap() = None;
*self.callback.write().unwrap() = None;

View File

@@ -348,7 +348,7 @@ impl SearchResultsView {
0
}
fn perform_search<I: ListItem>(
fn perform_search<I: ListItem + Clone>(
&self,
handler: SearchHandler<I>,
results: &Arc<RwLock<Vec<I>>>,