38 lines
840 B
Rust
38 lines
840 B
Rust
|
// edition:2021
|
||
|
|
||
|
type TranslateFn = Box<dyn Fn(String, String) -> String>;
|
||
|
|
||
|
pub struct DeviceCluster {
|
||
|
devices: Vec<Device>,
|
||
|
}
|
||
|
|
||
|
impl DeviceCluster {
|
||
|
pub async fn do_something(&mut self) -> Result<String, Box<dyn std::error::Error>> {
|
||
|
let mut last_error: Box<dyn std::error::Error>;
|
||
|
|
||
|
for device in &mut self.devices {
|
||
|
match device.do_something().await {
|
||
|
Ok(info) => {
|
||
|
return Ok(info);
|
||
|
}
|
||
|
Err(e) => {}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Err(last_error)
|
||
|
//~^ ERROR used binding `last_error` isn't initialized
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub struct Device {
|
||
|
translate_fn: Option<TranslateFn>,
|
||
|
}
|
||
|
|
||
|
impl Device {
|
||
|
pub async fn do_something(&mut self) -> Result<String, Box<dyn std::error::Error>> {
|
||
|
Ok(String::from(""))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn main() {}
|