Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. extern crate regex;
  2. extern crate uuid;
  3.  
  4. use regex::Regex;
  5. use uuid::Uuid;
  6.  
  7. pub struct Player {
  8. match_id: Uuid,
  9. player_id: i64,
  10. mmr_change: i32,
  11. is_winner: bool
  12. }
  13.  
  14. pub fn generate_players(match_id: Uuid, command: &str) -> Vec<Player> {
  15. let (winners, losers) = split_players(command);
  16. let winners = get_ids(winners).into_iter().map(|id| (id, true));
  17. let losers = get_ids(losers).into_iter().map(|id| (id, false));
  18.  
  19. winners.chain(losers)
  20. .map(|(player_id, is_winner)| {
  21. Player {
  22. match_id,
  23. player_id,
  24. mmr_change: 25,
  25. is_winner
  26. }
  27. }).collect()
  28. }
  29.  
  30. fn split_players(command: &str) -> (&str, &str) {
  31. let mut split = command.split("defeated");
  32. (split.next().unwrap(), split.next().unwrap())
  33. }
  34.  
  35. fn get_ids(command: &str) -> Vec<i64> {
  36. let re = Regex::new(r"<@(\d+)>").unwrap();
  37.  
  38. re.captures_iter(command)
  39. .map(|capture| capture[1].parse().unwrap())
  40. .collect()
  41.  
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement