тут
#[derive(Deserialize)]
pub struct Config {
pub token_file: String,
pub address: String,
}
lazy_static::lazy_static! {
pub static ref cfg: RwLock<Config> = from_str(
read_to_string(CONFIG_PATH).as_ref().expect("Конфиг не найден")
).expect("Где-то проёбка в конфиге");
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
Server::builder()
.add_service(service)
.serve(cfg.read()?.address.parse()?)
.await?;
Ok(())
}
——————————————-
warning: this `MutexGuard` is held across an `await` point
--> src/main.rs:31:10
|
31 | .serve(cfg.read()?.address.parse()?)
| ^^^^^^^^^^^
|
= help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling await
note: these are all the `await` points this lock is held through
вероятно, потому что неправильно видит, где лок дропается попробуй так: let address = { cfg.read()?.address.parse()? }; Server::builder().add_service(service).serve(address).await?;
а это какой-то важный варнинг или можно просто забить?
сам по себе варнинг важный, но тут это false positive вроде, гвард дропается до .await
Обсуждают сегодня