rust - 为 sqlx 值创建适配器
问题描述
我在应用程序中具有通用特征,可以跨不同存储转换结果。现在我想添加对 SQLx 的支持。我想让它对所有 sqlx 引擎保持通用。
i64 的简化示例:
// My trait
pub trait TryConvert {
fn try_i64(&self) -> i64;
}
首先实现尝试:
// Gives error
// the trait `sqlx::Decode<'_, DB>` is not implemented for `i64`
impl<DB, V> TryConvert for V
where
DB: Database,
V: Value<Database = DB>,
{
fn try_i64(&self) -> i64 {
self.try_decode_unchecked().unwrap()
}
}
现在Decode
对于 i64:
// Gives error:
// expected `sqlx::Decode<'_, DB>` found `sqlx::Decode<'a, DB>`
impl<'a, DB, V> TryConvert for V
where
DB: Database,
V: Value<Database = DB>,
i64: Decode<'a, DB>,
{
fn try_i64(&self) -> i64 {
self.try_decode_unchecked().unwrap()
}
}
但都适用于具体的数据库类型:
impl<V> TryConvert for V
where
V: Value<Database = Sqlite>,
{
fn try_i64(&self) -> i64 {
self.try_decode_unchecked().unwrap()
}
}
是否可以保留TryConvert
任何 sqlx 数据库引擎的通用性?
解决方案
推荐阅读
- php - Curl 命令运行顺利,但将其转换为 php 并运行让我“500 内部服务错误”
- twig - 我怎样才能让我的表格只显示年份(而不是 dmy, mm:hh)?
- linux - openconnect vpn not change resolv.conf from GUI . Fedora 29
- java - 如何使用 selenium 以角度处理 webtables?
- c++ - 使用类继承将单喜欢列表转换为双向链接列表
- docker - 在 Docker 中服务如何开始“启动”的排序 - (在启动另一个服务之前等待一个服务完全启动)
- python-3.x - Python:如何在盒须图中打印盒子、胡须和异常值?
- reactjs - 错误:使用 redux 进入 react-navigation v3
- swift - 在 xib 控制器中注入依赖项
- javascript - How to fix the problem with 3D animation CSS on iOS (Safari / Chrome)