diff --git a/crates/notedeck_columns/src/column.rs b/crates/notedeck_columns/src/column.rs index 4653617a..5c7eb3bf 100644 --- a/crates/notedeck_columns/src/column.rs +++ b/crates/notedeck_columns/src/column.rs @@ -158,13 +158,19 @@ impl Columns { } #[inline] - pub fn selected(&self) -> &Column { - &self.columns[self.selected as usize] + pub fn selected(&self) -> Option<&Column> { + if self.columns.is_empty() { + return None; + } + Some(&self.columns[self.selected as usize]) } #[inline] - pub fn selected_mut(&mut self) -> &mut Column { - &mut self.columns[self.selected as usize] + pub fn selected_mut(&mut self) -> Option<&mut Column> { + if self.columns.is_empty() { + return None; + } + Some(&mut self.columns[self.selected as usize]) } #[inline] diff --git a/crates/notedeck_columns/src/decks.rs b/crates/notedeck_columns/src/decks.rs index b61b4ad1..45c719a4 100644 --- a/crates/notedeck_columns/src/decks.rs +++ b/crates/notedeck_columns/src/decks.rs @@ -33,11 +33,11 @@ impl DecksCache { /// Gets the first column in the currently active user's active deck pub fn selected_column_mut(&mut self, accounts: ¬edeck::Accounts) -> Option<&mut Column> { self.active_columns_mut(accounts) - .map(|ad| ad.selected_mut()) + .and_then(|ad| ad.selected_mut()) } pub fn selected_column(&self, accounts: ¬edeck::Accounts) -> Option<&Column> { - self.active_columns(accounts).map(|ad| ad.selected()) + self.active_columns(accounts).and_then(|ad| ad.selected()) } /// Gets a mutable reference to the active columns