pub struct ProgressEngine<'a> { /* private fields */ }Expand description
Progress management workflow engine.
Implementations§
Source§impl<'a> ProgressEngine<'a>
impl<'a> ProgressEngine<'a>
Sourcepub async fn reset_deck(&self, deck: &str) -> Result<ResetReport>
pub async fn reset_deck(&self, deck: &str) -> Result<ResetReport>
Sourcepub async fn tag_by_performance(
&self,
query: &str,
criteria: PerformanceCriteria,
struggling_tag: &str,
mastered_tag: &str,
) -> Result<TagReport>
pub async fn tag_by_performance( &self, query: &str, criteria: PerformanceCriteria, struggling_tag: &str, mastered_tag: &str, ) -> Result<TagReport>
Tag cards based on their performance.
Cards are categorized as “struggling” or “mastered” based on ease factor, lapse count, and review count.
§Arguments
query- Anki search query to filter cardscriteria- Criteria for categorizationstruggling_tag- Tag to apply to struggling cardsmastered_tag- Tag to apply to mastered cards
§Example
let engine = Engine::new();
let report = engine.progress()
.tag_by_performance(
"deck:Japanese",
PerformanceCriteria::default(),
"struggling",
"mastered"
)
.await?;
println!("{} struggling, {} mastered", report.struggling_count, report.mastered_count);Sourcepub async fn suspend_by_criteria(
&self,
query: &str,
criteria: SuspendCriteria,
) -> Result<SuspendReport>
pub async fn suspend_by_criteria( &self, query: &str, criteria: SuspendCriteria, ) -> Result<SuspendReport>
Suspend cards matching performance criteria.
§Arguments
query- Anki search query to filter cardscriteria- Criteria for suspension
§Example
let engine = Engine::new();
let report = engine.progress()
.suspend_by_criteria("deck:Japanese", SuspendCriteria::default())
.await?;
println!("Suspended {} cards", report.cards_suspended);Sourcepub async fn deck_health(&self, deck: &str) -> Result<HealthReport>
pub async fn deck_health(&self, deck: &str) -> Result<HealthReport>
Sourcepub async fn bulk_tag(
&self,
query: &str,
operation: TagOperation,
) -> Result<BulkTagReport>
pub async fn bulk_tag( &self, query: &str, operation: TagOperation, ) -> Result<BulkTagReport>
Perform bulk tag operation on notes matching a query.
§Arguments
query- Anki search query to filter notesoperation- Tag operation to perform
§Example
let engine = Engine::new();
// Add tags
let report = engine.progress()
.bulk_tag("deck:Japanese", TagOperation::Add("needs-review".to_string()))
.await?;
// Remove tags
let report = engine.progress()
.bulk_tag("deck:Japanese", TagOperation::Remove("old-tag".to_string()))
.await?;
// Replace tags
let report = engine.progress()
.bulk_tag("deck:Japanese", TagOperation::Replace {
old: "v1".to_string(),
new: "v2".to_string(),
})
.await?;Sourcepub async fn smart_suspend(
&self,
query: &str,
criteria: SimilarityCriteria,
) -> Result<SmartSuspendReport>
pub async fn smart_suspend( &self, query: &str, criteria: SimilarityCriteria, ) -> Result<SmartSuspendReport>
Suspend similar cards to reduce interference during learning.
This workflow analyzes cards for content similarity and suspends all but one card from each group of similar cards.
§Arguments
query- Anki search query to filter cardscriteria- Similarity criteria and options
§Example
let engine = Engine::new();
// First do a dry run to see what would be suspended
let report = engine.progress()
.smart_suspend("deck:Japanese", SimilarityCriteria {
threshold: 0.85,
field: "Front".to_string(),
keep_strategy: KeepStrategy::MostMature,
dry_run: true,
})
.await?;
println!("Would suspend {} cards in {} groups",
report.cards_suspended, report.groups_found);
// Then actually suspend
let report = engine.progress()
.smart_suspend("deck:Japanese", SimilarityCriteria {
dry_run: false,
..SimilarityCriteria::default()
})
.await?;Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for ProgressEngine<'a>
impl<'a> !RefUnwindSafe for ProgressEngine<'a>
impl<'a> Send for ProgressEngine<'a>
impl<'a> Sync for ProgressEngine<'a>
impl<'a> Unpin for ProgressEngine<'a>
impl<'a> !UnwindSafe for ProgressEngine<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more