Rust-based Scheduler for FSRS
50
stars
66
commits
Rust
primary language
Jul 20, 2026
updated
A rust implementation of FSRS scheduler.
Install:
[dependencies]
rs-fsrs = { version = "1.2.1" }
Quickstart:
use chrono::Utc;
use rs_fsrs::{FSRS, Card, Rating};
fn main() {
let fsrs = FSRS::default();
let card = Card::new();
let record_log = fsrs.repeat(card, Utc::now());
for rating in Rating::iter() {
let item = record_log[rating].to_owned();
println!("{:?}", item.card);
println!("{:?}", item.review_log);
}
}
The library provides support for working with fractional days through the FractionalDays trait:
use chrono::Duration;
use rs_fsrs::FractionalDays;
fn main() {
// Convert Duration to fractional days
let duration = Duration::hours(36); // 1.5 days
let days = duration.num_fractional_days(); // 1.5
// Create Duration from fractional days
let duration = Duration::fractional_days(2.5); // 2.5 days
}
This is useful when you need more precision than whole days, as chrono's num_days() method truncates fractional parts.
run
cargo fmt
cargo clippy -- -D clippy::nursery
cargo test --release
fsrs-rs contains a Rust API for training FSRS parameters, and for using them to schedule cards.
MIT
Rust
100.0%
Rust-based Scheduler for FSRS
50
stars
66
commits
Rust
primary language
Jul 20, 2026
updated
A rust implementation of FSRS scheduler.
Install:
[dependencies]
rs-fsrs = { version = "1.2.1" }
Quickstart:
use chrono::Utc;
use rs_fsrs::{FSRS, Card, Rating};
fn main() {
let fsrs = FSRS::default();
let card = Card::new();
let record_log = fsrs.repeat(card, Utc::now());
for rating in Rating::iter() {
let item = record_log[rating].to_owned();
println!("{:?}", item.card);
println!("{:?}", item.review_log);
}
}
The library provides support for working with fractional days through the FractionalDays trait:
use chrono::Duration;
use rs_fsrs::FractionalDays;
fn main() {
// Convert Duration to fractional days
let duration = Duration::hours(36); // 1.5 days
let days = duration.num_fractional_days(); // 1.5
// Create Duration from fractional days
let duration = Duration::fractional_days(2.5); // 2.5 days
}
This is useful when you need more precision than whole days, as chrono's num_days() method truncates fractional parts.
run
cargo fmt
cargo clippy -- -D clippy::nursery
cargo test --release
fsrs-rs contains a Rust API for training FSRS parameters, and for using them to schedule cards.
MIT
Rust
100.0%