#[derive(sqlx::FromRow)]
struct Ma {
id: u64,
name: String,
}
async fn get_data(executor: sqlx::Pool<sqlx::MySql>) -> Result<Ma, sqlx::Error> {
//sql exec error,how get sql form sqlx::Error?
let mut res = sqlx::query_as::<sqlx::MySql, Ma>("select * from aa");
res = res.bind(1);
res.fetch_one(&executor).await //sql可以这里map 转换err放入去,但每次都手动很不方便
//也不想把 fetch_one fetch_all 等方法外面在封装一层,因为要封装太多
}
1
共 7 条评论, 1 页
评论区
写评论每次调用都要写 context 好累赘。。 最后我还是包装macro处理了
--
👇
liusen-adalab: 最近研究了一下 snafu,应该能满足你的需求,可以像 thiserror 一样定义错误类型,同时可以像 anyhow 一样用 context。
最近研究了一下 snafu,应该能满足你的需求,可以像 thiserror 一样定义错误类型,同时可以像 anyhow 一样用 context。
一开始想整个macro,但发现要包好几个请求方法,又不想搞了
--
👇
shanliu: 知道 就是不想每个都map_err转一下 太麻烦了
--
👇
SkyWalker: sqlx::query::QueryAs里有sql字符串。
--
👇
苦瓜小仔: 听起来你想要在 Result::Err 的情况下获取函数内部变量的信息。
那么首先去查 sqlx::Error 有没有包括你需要的东西;
如果没有,你可以自定义错误类型:
自定义错误类型是枚举还是结构体取决于你想要拿 sql 语句干什么。
如果你连 map_err 都嫌麻烦的话,那就没什么好办法了。Rust 的错误处理和类型设计就是这样。
知道 就是不想每个都map_err转一下 太麻烦了
--
👇
SkyWalker: sqlx::query::QueryAs里有sql字符串。
--
👇
苦瓜小仔: 听起来你想要在 Result::Err 的情况下获取函数内部变量的信息。
那么首先去查 sqlx::Error 有没有包括你需要的东西;
如果没有,你可以自定义错误类型:
自定义错误类型是枚举还是结构体取决于你想要拿 sql 语句干什么。
如果你连 map_err 都嫌麻烦的话,那就没什么好办法了。Rust 的错误处理和类型设计就是这样。
不嫌麻烦就不问了 提问时就说了不想挨个map_err 转换
--
👇
苦瓜小仔: 听起来你想要在 Result::Err 的情况下获取函数内部变量的信息。
那么首先去查 sqlx::Error 有没有包括你需要的东西;
如果没有,你可以自定义错误类型:
自定义错误类型是枚举还是结构体取决于你想要拿 sql 语句干什么。
如果你连 map_err 都嫌麻烦的话,那就没什么好办法了。Rust 的错误处理和类型设计就是这样。
sqlx::query::QueryAs里有sql字符串。
--
👇
苦瓜小仔: 听起来你想要在 Result::Err 的情况下获取函数内部变量的信息。
那么首先去查 sqlx::Error 有没有包括你需要的东西;
如果没有,你可以自定义错误类型:
自定义错误类型是枚举还是结构体取决于你想要拿 sql 语句干什么。
如果你连 map_err 都嫌麻烦的话,那就没什么好办法了。Rust 的错误处理和类型设计就是这样。
听起来你想要在 Result::Err 的情况下获取函数内部变量的信息。
那么首先去查 sqlx::Error 有没有包括你需要的东西;
如果没有,你可以自定义错误类型:
自定义错误类型是枚举还是结构体取决于你想要拿 sql 语句干什么。
如果你连 map_err 都嫌麻烦的话,那就没什么好办法了。Rust 的错误处理和类型设计就是这样。