问题标签 [rust-diesel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 关联引用类型作为值类型
这是Diesel 的一个特征。
这是一个派生 impl 的 User 模型Identifiable
。
根据文档, Identifiable 的实现是在结构的引用上派生的,即 on &User
。这是find
在. 用户的实现如下。id
Identifiable
Find
on a的含义User
。
编译时的错误:
因为我想找到一个用户i32
,所以 impl<&'a Self as Identifiable>::Id
会将 id 称为&i32
. 我只想id
成为一个值而不是引用类型。
当应用于引用类型时,如何将id
on的类型定义find
为值类型?Identifiable
&User
rust - 无法推断“U”的类型
我正在使用 Rust 和 Diesel:
编译器错误:
rust - 我如何获得选项而不是一个选项> 来自仅返回 1 或 0 条记录的 Diesel 查询?
我正在查询名为messages
;的表中的现有记录。然后将此查询用作“查找或创建”功能的一部分:
我已将此设置为可选,因为在这种情况下,查找记录和查找无记录都是有效的结果,因此该查询可能会返回 a Vec
with oneMessage
或 empty Vec
,所以我总是最终检查是否Vec
为空或不使用像这样的代码:
然后如果它不是空的,则使用以下代码将第一个Message
作为Vec
我找到的消息
我总是取第一个元素,Vec
因为记录是唯一的,所以查询只会返回 1 或 0 条记录。
这对我来说感觉有点乱,似乎采取了太多步骤,我觉得好像有查询记录那么它不应该返回Option<Message>
,Option<Vec<Message>>
或者None
如果没有与查询匹配的记录。
rust - 了解 Diesel 中的特征绑定错误
我想编写一个函数,将一个类型插入到数据库连接参数是通用的数据库中,以便它可以在多个后端工作。
我想出了以下函数来使用通用连接插入对象:
如果我不包含SupportsDefaultKeyword
约束,则该函数将无法编译。使用 aSqliteConnection
作为连接参数调用它时,出现以下错误:
database::create_label(&db_conn, &label); ^^^^^^^^^^^^^^^^^^^^^^ the trait 'diesel::backend::SupportsDefaultKeyword' is not implemented for 'diesel::sqlite::Sqlite'
这意味着使用 a 插入数据SqliteConnection
不起作用。显然情况并非如此,并且进一步改变create_label
以使其SqliteConnection
直接工作就可以了。
为什么泛型函数需要SupportsDefaultKeyword
约束而函数获取SqliteConnection
不需要?
这是一个说明问题的最小示例。根据评论,第 60main.rs
行将不会因上面的错误而编译,而第 61 行会编译:
postgresql - 使用 Diesel 执行插入或更新
我正在尝试使用Diesel和 PostgreSQL 执行插入或更新。
我努力了:
哪里objects
是std::vec::Vec<Struct>
- 导致编译器错误:
查询生成器中有一个on_conflict_do_nothing()
,但我似乎找不到类似on_conflict_do_update()
or的东西on_conflict_do_replace()
。
generics - 如何通过抽象将使用 Diesel 的多个功能组合为一个?
我有以下两个功能:
我想将两者结合为一个功能。我尝试了几种不同的方法,但是
- 我对 Rust 很陌生
- 柴油有奇怪的类型(或者至少感觉是这样)
有哪些方法可以合并这两个功能(仅在字段上有所不同,types::ethereum
并ETHRecord
合并为一个统一的功能get_most_recent_entry
?
这些是我的数据库结构定义(SQL 模式是等效定义的):
和类型
和类型
rust - 在 musl 上编译 Diesel 迁移:未定义的符号 strlcpy
以下是 Diesel 的diesel_migrations
板条箱无法使用clux/muslrust
映像通过 Docker 在 musl 上编译的最小工作示例。它给出了一个undefined symbol: strlcpy
错误。该代码在本机系统 (macOS) 上运行良好。
码头工人命令
满载货物输出
货运.toml
src/main.rs
迁移/2018-02-07-164146_create_post/up.sql
迁移/2018-02-07-164146_create_post/down.sql
rust - 使用动态数量的 .and() 创建 Diesel.rs 查询
在玩 Diesel 时,我一直在编写一个函数,该函数将String
s 的向量作为输入并执行以下操作:
- 将所有
String
s 组合成一个大查询 - 在
Connection
- 处理结果
- 返回一个
Vec
如果我一步构建查询,它就可以正常工作:
如果我尝试以更多步骤生成查询(需要使用输入向量的可变长度),我无法编译它:
这会产生以下错误:
我不明白为什么 Rust 需要 aLike
而不是And
. 函数 an 行 line 标记<1>
返回 an And
,因此 anAnd
存储在inner
.
我错过了什么?为什么第一个代码可以编译而第二个不会?生成这种查询的正确方法是什么?