From 7b7d7e83300515e132b556cf61768b6d91568cba Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 12 Mar 2021 16:20:58 +1000 Subject: [PATCH] consume original card when updating --- rslib/src/card/mod.rs | 8 ++++---- rslib/src/card/undo.rs | 6 +++--- rslib/src/filtered.rs | 4 ++-- rslib/src/scheduler/answering/mod.rs | 2 +- rslib/src/scheduler/bury_and_suspend.rs | 4 ++-- rslib/src/scheduler/new.rs | 6 +++--- rslib/src/scheduler/reviews.rs | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/rslib/src/card/mod.rs b/rslib/src/card/mod.rs index 1cbec18af..780f5e1bf 100644 --- a/rslib/src/card/mod.rs +++ b/rslib/src/card/mod.rs @@ -145,7 +145,7 @@ impl Collection { op: Option, ) -> Result<()> { let existing = self.storage.get_card(card.id)?.ok_or(AnkiError::NotFound)?; - self.transact(op, |col| col.update_card_inner(card, &existing, col.usn()?)) + self.transact(op, |col| col.update_card_inner(card, existing, col.usn()?)) } #[cfg(test)] @@ -159,7 +159,7 @@ impl Collection { .ok_or_else(|| AnkiError::invalid_input("no such card"))?; let mut card = orig.clone(); func(&mut card)?; - self.update_card_inner(&mut card, &orig, self.usn()?)?; + self.update_card_inner(&mut card, orig, self.usn()?)?; Ok(card) } @@ -167,7 +167,7 @@ impl Collection { pub(crate) fn update_card_inner( &mut self, card: &mut Card, - original: &Card, + original: Card, usn: Usn, ) -> Result<()> { card.set_modified(usn); @@ -218,7 +218,7 @@ impl Collection { } let original = card.clone(); card.set_deck(deck_id, sched); - col.update_card_inner(&mut card, &original, usn)?; + col.update_card_inner(&mut card, original, usn)?; } Ok(()) }) diff --git a/rslib/src/card/undo.rs b/rslib/src/card/undo.rs index b6375c53a..fc23da733 100644 --- a/rslib/src/card/undo.rs +++ b/rslib/src/card/undo.rs @@ -21,7 +21,7 @@ impl Collection { .storage .get_card(card.id)? .ok_or_else(|| AnkiError::invalid_input("card disappeared"))?; - self.update_card_undoable(&mut *card, ¤t) + self.update_card_undoable(&mut *card, current) } UndoableCardChange::Removed(card) => self.restore_deleted_card(*card), UndoableCardChange::GraveAdded(e) => self.remove_card_grave(e.0, e.1), @@ -35,11 +35,11 @@ impl Collection { Ok(()) } - pub(super) fn update_card_undoable(&mut self, card: &mut Card, original: &Card) -> Result<()> { + pub(super) fn update_card_undoable(&mut self, card: &mut Card, original: Card) -> Result<()> { if card.id.0 == 0 { return Err(AnkiError::invalid_input("card id not set")); } - self.save_undo(UndoableCardChange::Updated(Box::new(original.clone()))); + self.save_undo(UndoableCardChange::Updated(Box::new(original))); self.storage.update_card(card) } diff --git a/rslib/src/filtered.rs b/rslib/src/filtered.rs index 37bfae449..101fb86cb 100644 --- a/rslib/src/filtered.rs +++ b/rslib/src/filtered.rs @@ -184,7 +184,7 @@ impl Collection { if let Some(mut card) = self.storage.get_card(*cid)? { let original = card.clone(); card.remove_from_filtered_deck_restoring_queue(sched); - self.update_card_inner(&mut card, &original, usn)?; + self.update_card_inner(&mut card, original, usn)?; } } Ok(()) @@ -249,7 +249,7 @@ impl Collection { for mut card in self.storage.all_searched_cards_in_search_order()? { let original = card.clone(); card.move_into_filtered_deck(ctx, position); - self.update_card_inner(&mut card, &original, ctx.usn)?; + self.update_card_inner(&mut card, original, ctx.usn)?; position += 1; } diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index 3913bee97..87b649250 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -269,7 +269,7 @@ impl Collection { self.maybe_bury_siblings(&original, &updater.config)?; let timing = updater.timing; let mut card = updater.into_card(); - self.update_card_inner(&mut card, &original, usn)?; + self.update_card_inner(&mut card, original, usn)?; if answer.new_state.leeched() { self.add_leech_tag(card.note_id)?; } diff --git a/rslib/src/scheduler/bury_and_suspend.rs b/rslib/src/scheduler/bury_and_suspend.rs index 24374ef10..43f766bf3 100644 --- a/rslib/src/scheduler/bury_and_suspend.rs +++ b/rslib/src/scheduler/bury_and_suspend.rs @@ -62,7 +62,7 @@ impl Collection { for original in self.storage.all_searched_cards()? { let mut card = original.clone(); if card.restore_queue_after_bury_or_suspend() { - self.update_card_inner(&mut card, &original, usn)?; + self.update_card_inner(&mut card, original, usn)?; } } self.storage.clear_searched_cards_table() @@ -113,7 +113,7 @@ impl Collection { card.remove_from_learning(); } card.queue = desired_queue; - self.update_card_inner(&mut card, &original, usn)?; + self.update_card_inner(&mut card, original, usn)?; } } diff --git a/rslib/src/scheduler/new.rs b/rslib/src/scheduler/new.rs index 7fce556b1..06691a421 100644 --- a/rslib/src/scheduler/new.rs +++ b/rslib/src/scheduler/new.rs @@ -115,7 +115,7 @@ impl Collection { if log { col.log_manually_scheduled_review(&card, &original, usn)?; } - col.update_card_inner(&mut card, &original, usn)?; + col.update_card_inner(&mut card, original, usn)?; position += 1; } col.set_next_card_position(position)?; @@ -156,7 +156,7 @@ impl Collection { for mut card in cards { let original = card.clone(); card.set_new_position(sorter.position(&card)); - self.update_card_inner(&mut card, &original, usn)?; + self.update_card_inner(&mut card, original, usn)?; } self.storage.clear_searched_cards_table() } @@ -178,7 +178,7 @@ impl Collection { for mut card in self.storage.all_searched_cards()? { let original = card.clone(); card.set_new_position(card.due as u32 + by); - self.update_card_inner(&mut card, &original, usn)?; + self.update_card_inner(&mut card, original, usn)?; } self.storage.clear_searched_cards_table()?; Ok(()) diff --git a/rslib/src/scheduler/reviews.rs b/rslib/src/scheduler/reviews.rs index 04a2e469c..cec735a4e 100644 --- a/rslib/src/scheduler/reviews.rs +++ b/rslib/src/scheduler/reviews.rs @@ -107,7 +107,7 @@ impl Collection { let days_from_today = distribution.sample(&mut rng); card.set_due_date(today, days_from_today, spec.force_reset); col.log_manually_scheduled_review(&card, &original, usn)?; - col.update_card_inner(&mut card, &original, usn)?; + col.update_card_inner(&mut card, original, usn)?; } col.storage.clear_searched_cards_table()?; if let Some(key) = context {