Skip to main content

ProgressEngine

Struct ProgressEngine 

Source
pub struct ProgressEngine<'a> { /* private fields */ }
Expand description

Progress management workflow engine.

Implementations§

Source§

impl<'a> ProgressEngine<'a>

Source

pub async fn reset_deck(&self, deck: &str) -> Result<ResetReport>

Reset all cards in a deck to new state.

This clears all learning progress for the deck.

§Arguments
  • deck - Name of the deck to reset
§Example
let engine = Engine::new();
let report = engine.progress().reset_deck("Test Deck").await?;
println!("Reset {} cards", report.cards_reset);
Source

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 cards
  • criteria - Criteria for categorization
  • struggling_tag - Tag to apply to struggling cards
  • mastered_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);
Source

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 cards
  • criteria - 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);
Source

pub async fn deck_health(&self, deck: &str) -> Result<HealthReport>

Get comprehensive health report for a deck.

§Arguments
  • deck - Deck name to analyze
§Example
let engine = Engine::new();
let report = engine.progress().deck_health("Japanese").await?;
println!("Total: {}, Suspended: {}, Leeches: {}",
    report.total_cards, report.suspended_cards, report.leech_count);
Source

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 notes
  • operation - 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?;
Source

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 cards
  • criteria - 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§

Source§

impl<'a> Debug for ProgressEngine<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more