Make it more rusty

This commit is contained in:
2022-12-27 22:24:01 +01:00
parent fdddf56156
commit 9b6cb9e7eb

View File

@@ -110,7 +110,7 @@ pub struct Batch {
impl Batch { impl Batch {
pub fn new( pub fn new(
composition: Vec<Vec<Vec<Index>>>, compositions: Vec<Vec<Vec<Index>>>,
results: Vec<Vec<f64>>, results: Vec<Vec<f64>>,
weights: Vec<Vec<Vec<f64>>>, weights: Vec<Vec<Vec<f64>>>,
time: i64, time: i64,
@@ -118,47 +118,48 @@ impl Batch {
agents: &HashMap<Index, Agent>, agents: &HashMap<Index, Agent>,
) -> Self { ) -> Self {
assert!( assert!(
results.is_empty() || results.len() == composition.len(), results.is_empty() || results.len() == compositions.len(),
"TODO: Add a comment here" "TODO: Add a comment here"
); );
assert!( assert!(
weights.is_empty() || weights.len() == composition.len(), weights.is_empty() || weights.len() == compositions.len(),
"TODO: Add a comment here" "TODO: Add a comment here"
); );
let this_agent = composition let this_agent = compositions
.iter() .iter()
.flatten() .flatten()
.flatten() .flatten()
.cloned()
.collect::<HashSet<_>>(); .collect::<HashSet<_>>();
let elapsed = this_agent
.iter()
.map(|&idx| (idx, compute_elapsed(agents[&idx].last_time, time)))
.collect::<HashMap<_, _>>();
let skills = this_agent let skills = this_agent
.iter() .iter()
.map(|&idx| { .map(|&idx| {
let elapsed = compute_elapsed(agents[idx].last_time, time);
( (
idx, *idx,
Skill { Skill {
forward: agents[&idx].receive(elapsed[&idx]), forward: agents[idx].receive(elapsed),
elapsed: elapsed[&idx], elapsed,
..Default::default() ..Default::default()
}, },
) )
}) })
.collect::<HashMap<_, _>>(); .collect::<HashMap<_, _>>();
let events = (0..composition.len()) let events = compositions
.map(|e| { .iter()
let teams = (0..composition[e].len()) .enumerate() // (0..composition.len())
.map(|t| { .map(|(e, composition)| {
let items = (0..composition[e][t].len()) let teams = composition
.map(|a| Item { .iter()
agent: composition[e][t][a], .enumerate() // (0..composition.len())
.map(|(t, team)| {
let items = team
.iter()
.map(|&agent| Item {
agent,
likelihood: N_INF, likelihood: N_INF,
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();
@@ -166,7 +167,7 @@ impl Batch {
Team { Team {
items, items,
output: if results.is_empty() { output: if results.is_empty() {
(composition[e].len() - (t + 1)) as f64 (composition.len() - (t + 1)) as f64
} else { } else {
results[e][t] results[e][t]
}, },