首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用diesel查询数据时,没有为`&i64`实现特征`Queryable<BigInt,_>`

在使用diesel查询数据时,如果没有为&i64实现特征Queryable<BigInt, _>,可能会遇到以下问题:

  1. 错误信息:当尝试使用&i64类型进行查询时,编译器会报错,提示缺少Queryable<BigInt, _>特征的实现。

解决方案: 要解决这个问题,需要为&i64类型实现Queryable<BigInt, _>特征。Queryable特征是diesel框架中用于支持数据库查询的特征之一。它定义了将Rust类型映射到数据库查询语言的方法。

以下是一个示例的解决方案:

代码语言:txt
复制
use diesel::backend::Backend;
use diesel::deserialize::{self, FromSql};
use diesel::serialize::{self, Output, ToSql};
use diesel::sql_types::BigInt;
use diesel::Queryable;

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, FromSqlRow, AsExpression)]
#[sql_type = "BigInt"]
pub struct MyBigInt(pub i64);

impl<DB: Backend> Queryable<BigInt, DB> for MyBigInt {
    type Row = i64;

    fn build(row: Self::Row) -> Self {
        MyBigInt(row)
    }
}

impl<DB: Backend> FromSql<BigInt, DB> for MyBigInt {
    fn from_sql(bytes: Option<&DB::RawValue>) -> deserialize::Result<Self> {
        match i64::from_sql(bytes) {
            Ok(value) => Ok(MyBigInt(value)),
            Err(e) => Err(e),
        }
    }
}

impl<DB: Backend> ToSql<BigInt, DB> for MyBigInt {
    fn to_sql<W: std::io::Write>(&self, out: &mut Output<W, DB>) -> serialize::Result {
        self.0.to_sql(out)
    }
}

上述代码中,我们为MyBigInt类型实现了Queryable<BigInt, _>特征。这样,当使用&i64类型进行查询时,diesel就能够正确地将其映射到数据库查询语言。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云数据库 TencentDB:https://cloud.tencent.com/product/cdb 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm 腾讯云云原生容器服务 TKE:https://cloud.tencent.com/product/tke 腾讯云人工智能 AI:https://cloud.tencent.com/product/ai 腾讯云物联网 IoT Hub:https://cloud.tencent.com/product/iothub 腾讯云移动开发 MSDK:https://cloud.tencent.com/product/msdk 腾讯云对象存储 COS:https://cloud.tencent.com/product/cos 腾讯云区块链 TBaaS:https://cloud.tencent.com/product/tbaas 腾讯云元宇宙 QCloud Metaverse:https://cloud.tencent.com/product/qcloud-metaverse

请注意,以上链接仅供参考,具体选择产品时需要根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 2022-04-25:给定两个长度为N的数组,a[]和b[]也就是对于每个位置i来说,有a[i]和b[i]两个属性 i a[

    2022-04-25:给定两个长度为N的数组,a[]和b[] 也就是对于每个位置i来说,有a[i]和b[i]两个属性 i a[i] b[i] j a[j] b[j] 现在想为了i,选一个最好的j位置,搭配能得到最小的如下值: (a[i] + a[j]) ^ 2 + b[i] + b[j] 我们把这个最小的值,定义为i的最in值 比如 : a = { 2, 3, 6, 5, 1 } b = { 100, 70, 20, 40, 150 } 0 1 2 3 4 0位置和2位置搭配,可以得到最in值 : 184 1位置和2位置搭配,可以得到最in值 : 171 2位置和1位置搭配,可以得到最in值 : 171 3位置和1位置搭配,可以得到最in值 : 174 4位置和2位置搭配,可以得到最in值 : 219 注意 : i位置可以和i位置(自己)搭配,并不是说i和j一定要是不同的位置 返回每个位置i的最in值 比如上面的例子,最后返回[184, 171, 171, 174, 219] 1 <= N <= 10^5 1 <= a[i]、b[i] <= 10^9 来自第四届全国大学生算法设计与编程挑战赛(秋季赛)。

    03
    领券