【发布时间】:2024-01-23 07:59:01
【问题描述】:
我有自定义类型,可用作 Diesel 中安全使用的其他类型的包装器:
use uuid::Uuid;
pub schema Post {
id: PostId,
title: String,
body: String
}
pub schema PostId {value: Uuid}
我无法将这些自定义包装器与 Diesel 一起使用。我得到的错误信息如下:
#[derive(Insertable)]
the trait `diesel::Expression` is not implemented for `models::PostId`
我试图寻找有关转换自定义类型的示例,到目前为止,我看到的两种方法是实现 AsExpression 特征或 FromSql 和 ToSql 特征,但是我的示例'到目前为止看到的是枚举类型,我无法推断这两种方法之间的区别是什么,除了前者似乎是一种较旧的方式,也不知道这些特征的预期实现是什么。
【问题讨论】:
-
不幸的是,柴油(以及我尝试过的其他生锈剂)中的自定义类型非常痛苦。我最近写了一个post 一个更简单的案例,希望它可以帮助。
-
很难回答您的问题,因为它不包含minimal reproducible example。我们无法分辨代码中存在哪些 crate(及其版本)、类型、特征、字段等。如果您尝试在Rust Playground 上重现您的错误,如果可能的话,这将使我们更容易为您提供帮助,否则在全新的 Cargo 项目中,然后在edit 您的问题中包含附加信息。您可以使用Rust-specific MRE tips 来减少您在此处发布的原始代码。谢谢!
-
感谢 Shepmaster 的编辑!我添加了一些可能解释问题的额外信息,但感谢 Weiznich 的回答,我终于解决了问题!
标签: rust rust-diesel