```rust pub fn read_all(&mut self) -> SensorData { let mut sensor_data = SensorData::default(); let mut self_clone = self.clone(); // Clone sel let adc_handle = std::thread::spawn(move || self.read_adc_all()); let temperature_handle = std::thread::spawn(|| self.read_temperature()); let pressure_handle = std::thread::spawn(|| self.read_pressure()); let accel_handle = std::thread::spawn(|| self.read_accel()); let mag_handle = std::thread::spawn(|| self.read_mag()); let gyro_handle = std::thread::spawn(|| self.read_gyro()); sensor_data.adc = adc_handle.join().unwrap(); sensor_data.temperature = temperature_handle.join().unwrap(); sensor_data.pressure = pressure_handle.join().unwrap(); sensor_data.accelerometer = accel_handle.join().unwrap(); sensor_data.magnetometer = mag_handle.join().unwrap(); sensor_data.gyro = gyro_handle.join().unwrap(); sensor_data } ```