use sqlx::MySqlPool; use context_async::{Context, Timer}; #[derive(Debug, Clone, sqlx::FromRow)] pub struct User { pub user_id: i64, } #[tokio::main] async fn main() -> anyhow::Result<()> { let sql = "SELECT 1 as user_id"; // create user aaa@'%' identified by 'apsdjfopasjdopfjas!!!!'; // create database if not exists dev; // grant all privileges on dev.* to aaa@'%'; let pool = MySqlPool::connect("mysql://aaa:apsdjfopasjdopfjas!!!!@localhost:3306/dev").await?; let fut = sqlx::query_as(sql).fetch_optional(&pool); let timer = Timer::todo(); let user: Option<User> = timer.handle(fut).await??; let user = user.unwrap_or(User { user_id: 111 }); println!("{}", user.user_id); Ok(()) }