Diesel会直接在项目根目录下的schema.rs文件中依据数据库表的结构生成好相应的数据结构。然后经过diesel支持的Macro,树立异样结构的struct就可以直接调用数据库中的数据条了。例如关于可以查询的数据条,可以在struct定义之上添加如下的Macro
#[derive(Queryable)]
struct Herb {
uid: i32,
cn_name: String,
en_name: String,
latin_name: String,
botanic_name: String,
part_used: String,
common_name: String,
country_of_origin: String,
description: String,
harvest_season: String,
grow_duration: String,
}
这样就可以直接经过在相应的业务逻辑中经过filter,load等查询函数了。
全体来说Diesel在开发进程中十分繁复明了,就算初次接触的话,也是能直接掌握,关于之后比较复杂的数据库操作自在度不确定能否足够,不过关于普通项目的数据操作还是足够的。
言语结构
Rust的言语结构同时是优势也是优势。关于初次接触的时分,Rust的言语结构十分令人疑惑,主要是其中的一些调用符号,比如->, : :, <>等等,不过熟习之后就会觉得这些符号也算比较直观,而且在不同场景运用不同的符号让代码的可读性反而提高了。
然后Rust高开发效率的特性也经过Macro机制表现的淋漓尽致。经过不同derive Macro设置可以直接将相应的笼统函数添加给struct,这样可以少写很多代码。例如下面我给这个struct添加了数据库查询(Queryable)的同时,添加了JSON的Serialize和Deserialize的功用。这样在查询出数据条可以直接调用JSON的map函数来生成JSON字符串。
#[derive(Serialize, Deserialize, Queryable)]
pub struct Herb {
pub uid: i32,
pub cn_name: String,
pub en_name: String,
pub latin_name: String,
pub botanic_name: String,
pub part_used: String,
pub common_name: String,
pub country_of_origin: String,
pub description: String,
pub harvest_season: String,
pub grow_duration: String,
}
这个关于RESTful接口十分有用,可以将数据库的查询结果直接map然后前往。
总的来说,一末尾会觉得Rust是比较复杂的编程言语,不过熟习了之后,还是十分喜欢Rust繁复的代码结构和高效的开发体验。
文档社区
(责任编辑:admin)