fix: use filter_map when filtering for devices that have already been found

This commit is contained in:
Gabriele Musco 2024-08-06 14:12:17 +02:00
commit cf2fa339ad

View file

@ -298,11 +298,11 @@ impl XRDevice {
}) })
.collect::<Vec<Self>>(); .collect::<Vec<Self>>();
if let Ok(all_devs) = monado.devices() { if let Ok(all_devs) = monado.devices() {
res.extend( res.extend(all_devs.into_iter().filter_map(|dev| {
all_devs if devs_with_role.contains(&dev.id) {
.into_iter() None
.filter(|dev| !devs_with_role.contains(&dev.id)) } else {
.map(|dev| Self { Some(Self {
index: dev.id.to_string(), index: dev.id.to_string(),
serial: dev.serial().ok(), serial: dev.serial().ok(),
battery: dev.battery_status().ok().and_then(|bs| { battery: dev.battery_status().ok().and_then(|bs| {
@ -314,8 +314,9 @@ impl XRDevice {
}), }),
name: dev.name, name: dev.name,
dev_type: XRDeviceRole::GenericTracker, dev_type: XRDeviceRole::GenericTracker,
}), })
) }
}))
} }
res res
} }