首页
学习
活动
专区
工具
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

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

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

相关·内容

没有搜到相关的沙龙

领券