Guest User

Untitled

a guest
Jun 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #[derive(Debug)]
  2. struct Up {
  3. weight: f64,
  4. cap: usize,
  5. conns: usize,
  6. }
  7.  
  8. fn main() {
  9. let mut ups = [
  10. Up {
  11. weight: 0.9,
  12. cap: 300,
  13. conns: 0,
  14. },
  15. Up {
  16. weight: 0.1,
  17. cap: 300,
  18. conns: 0,
  19. },
  20. ];
  21.  
  22. for i in 0..100 {
  23. let r: Option<usize> = {
  24. use std::cmp::Ordering::Equal;
  25. let r = ups
  26. .iter()
  27. .enumerate()
  28. .filter(|(i, e)| e.conns < e.cap)
  29. .min_by(|(i, a), (j, b)| {
  30. let a = a.conns as f64 / a.weight;
  31. let b = b.conns as f64 / b.weight;
  32. a.partial_cmp(&b).unwrap_or(Equal)
  33. })
  34. .map(|(i, ..)| i);
  35. r
  36. };
  37.  
  38. if let Some(idx) = r {
  39. ups[idx].conns += 1;
  40. }
  41. let arr = [
  42. ups[0].conns,
  43. ups[1].conns,
  44. ];
  45. println!("ups: {:?}", arr);
  46. }
  47. }
Add Comment
Please, Sign In to add comment