rvs 0.5.0

A library for defining and evaluating random variables using a simple DSL
Documentation
use crate::transform::CrateRng;
use crate::model::{Expr, ExprData};

use std::fmt;

#[derive(Clone)]
pub struct Value {
    data: ExprData,
}

impl Value {
    pub fn new(value: u32) -> Value {
        Value {
            data: ExprData {
                prev: value,
                done: false,
            },
        }
    }
}

impl Expr for Value {
    fn next(&mut self, _rng: &mut CrateRng) -> u32 {
        self.data.done = true;

        self.data.prev
    }

    fn data(&self) -> &ExprData {
        &self.data
    }
}

impl fmt::Display for Value {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "0x{:x}", self.data.prev)
    }
}