Guest User

Untitled

a guest
Oct 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. use std::cell::Cell;
  2. use std::rc::Rc;
  3.  
  4. struct Stat {
  5. name: String,
  6. cur_mean: f64,
  7. cur_variance: f64,
  8. covs: Vec<StatCov>,
  9. }
  10.  
  11. impl Stat {
  12. fn update(&mut self, time: f64, val: f64) {
  13. for cov in &self.covs {
  14. cov.update(time, val);
  15. }
  16. }
  17. }
  18.  
  19. #[derive(Clone)]
  20. struct StatCov {
  21. inner: Rc<InnerStatCov>,
  22. }
  23.  
  24. impl StatCov {
  25. fn update(&self, time: f64, val: f64) {
  26. self.inner.update(time, val);
  27. }
  28. }
  29.  
  30. #[derive(Default)]
  31. struct InnerStatCov {
  32. cur_mean: Cell<f64>,
  33. cur_variance: Cell<f64>,
  34. }
  35.  
  36. impl InnerStatCov {
  37. fn update(&self, time: f64, val: f64) {}
  38. }
  39.  
  40. fn main() {
  41. let shared_cov = StatCov {
  42. inner: Rc::new(InnerStatCov::default()),
  43. };
  44. let stat1 = Stat {
  45. name: "stat1".into(),
  46. cur_mean: 0.0,
  47. cur_variance: 0.0,
  48. covs: vec![shared_cov.clone()],
  49. };
  50.  
  51. let stat2 = Stat {
  52. name: "stat2".into(),
  53. cur_mean: 0.0,
  54. cur_variance: 0.0,
  55. covs: vec![shared_cov],
  56. };
  57. }
Add Comment
Please, Sign In to add comment