psyche_utils/bucket_strainer/rules/
bucket_limit_rule.rs1use crate::bucket_strainer::{Bucket, Rule};
2use crate::Scalar;
3
4#[derive(Clone)]
6pub struct BucketLimitRule {
7 pub limit: usize,
9}
10
11impl BucketLimitRule {
12 pub fn new(limit: usize) -> Self {
13 Self { limit }
14 }
15}
16
17impl<T> Rule<T> for BucketLimitRule
18where
19 T: Clone,
20{
21 fn score(&self, _: &T, bucket: &Bucket<T>) -> Scalar {
22 if bucket.items().len() < self.limit {
23 1.0
24 } else {
25 0.0
26 }
27 }
28
29 fn box_clone(&self) -> Box<dyn Rule<T>> {
30 Box::new((*self).clone())
31 }
32}