use crate::types::Real;
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct Sample<T> {
pub value: T,
pub weight: Real,
}
impl<T> Sample<T> {
pub fn new(value: T, weight: Real) -> Self {
Sample { value, weight }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn round_trips_value_and_weight() {
let s = Sample::new(3.0, 0.5);
assert_eq!(s.value, 3.0);
assert_eq!(s.weight, 0.5);
}
#[test]
fn carries_arbitrary_payloads() {
let s = Sample::new(vec![1.0, 2.0], 1.0);
assert_eq!(s.value, vec![1.0, 2.0]);
assert_eq!(s.weight, 1.0);
}
}