Expand description
§Shaum - Islamic Fasting Rules Engine
Determines fasting status (Wajib, Sunnah, Makruh, Haram) for any date.
§Quick Start
use chrono::NaiveDate;
use shaum::prelude::*;
let date = NaiveDate::from_ymd_opt(2024, 3, 11).unwrap();
// Extension API
if date.is_wajib() { println!("Ramadhan!"); }
// Full analysis
let analysis = date.fasting_analysis();
println!("{}", analysis.explain());§Query Engine
use chrono::NaiveDate;
use shaum::query::QueryExt;
let date = NaiveDate::from_ymd_opt(2024, 3, 1).unwrap();
let sunnah: Vec<_> = date.upcoming_fasts()
.take(5)
.map(|r| r.unwrap())
.filter(|a| a.primary_status.is_sunnah())
.collect();§Status Priority
Haram > Wajib > SunnahMuakkadah > Sunnah > Makruh > Mubah
Re-exports§
pub use types::FastingStatus;pub use types::FastingType;pub use types::FastingAnalysis;pub use types::Madhab;pub use types::DaudStrategy;pub use types::GeoCoordinate;pub use types::TraceCode;pub use rules::analyze;pub use rules::check;pub use calendar::ShaumError;pub use calendar::to_hijri;pub use rules::RuleContext;pub use rules::MoonProvider;pub use rules::SunsetProvider;pub use rules::DefaultSunsetProvider;
Modules§
- astronomy
- calendar
- constants
- Constants for Hijri months and days.
- extension
- Extension trait for
NaiveDate. - i18n
- macros
- prelude
- Re-exports for convenience.
- query
- Fluent query engine for finding fasting dates.
- rules
- types
Macros§
- shaum_
context - Declaratively creates a
RuleContext.
Structs§
- Daud
Iterator - Daud fasting iterator.
- Daud
Schedule Builder - Builder for Daud fasting schedule.
Functions§
- analyze_
date - Analyzes date with default context. Panics if analysis fails.
- generate_
daud_ schedule - Creates Daud schedule iterator.