///|
pub(all) struct Student {
id : String
score : Double
}
///|
pub(all) enum ExamResult {
Pass
Fail
} derive(Debug)
///|
pub impl Eq for ExamResult with fn equal(self, other) {
match (self, other) {
(Pass, Pass) | (Fail, Fail) => true
_ => false
}
}
///|
pub fn is_qualified(student : Student, criteria : Double) -> ExamResult {
if student.score >= criteria {
Pass
} else {
Fail
}
}
///|
pub fn count_qualified_students(
students : Array[Student],
is_qualified : (Student) -> ExamResult,
) -> Int {
let mut count = 0
for s in students {
if is_qualified(s) == Pass {
count += 1
}
}
count
}