#[derive(Debug, Clone, PartialEq)]
pub struct TrustScores {
scores: Vec<f64>,
iterations: usize,
residual: f64,
}
impl TrustScores {
pub(crate) fn new(scores: Vec<f64>, iterations: usize, residual: f64) -> Self {
TrustScores {
scores,
iterations,
residual,
}
}
pub fn scores(&self) -> &[f64] {
&self.scores
}
pub fn get(&self, peer: usize) -> Option<f64> {
self.scores.get(peer).copied()
}
pub fn len(&self) -> usize {
self.scores.len()
}
pub fn is_empty(&self) -> bool {
self.scores.is_empty()
}
pub fn ranking(&self) -> Vec<(usize, f64)> {
let mut ranking: Vec<(usize, f64)> = self.scores.iter().copied().enumerate().collect();
ranking.sort_by(|a, b| b.1.total_cmp(&a.1));
ranking
}
pub fn iterations(&self) -> usize {
self.iterations
}
pub fn residual(&self) -> f64 {
self.residual
}
pub fn into_scores(self) -> Vec<f64> {
self.scores
}
}