Rust能不能做后端开发语言?( 三 )

这样diesel会了连接到数据库服务器 , 如果数据库不存在的时候 , 会自动生成一个数据库 。 然后通过新建一个migration来添加数据库中的表
>diesel migration generate migration_name这样就会在项目根目录下migrations文件下生成当前时间为前缀的文件夹 , 其中有两个文件 , up.sql 存放新建表需要的sql语句 , down.sql存放up.sql内相关新建语句的销毁语句 , 例如:
//up.sqlCREATE TABLE IF NOT EXISTS herbs (uid int PRIMARY KEY AUTO_INCREMENT,cn_name varchar(255) NOT NULL,en_name varchar(255) DEFAULT NULL,latin_name varchar(255) NOT NULL,botanic_name varchar(255) DEFAULT NULL,part_used varchar(255) NOT NULL,common_name json DEFAULT NULL,country_of_origin json DEFAULT NULL,description text,harvest_season varchar(255) DEFAULT NULL,grow_duration varchar(255) DEFAULT NULL)//down.sqlDROP TABLE herbs添加好相应的SQL语句 , 在运行如下命令就基本上设置好了Diesel
>diesel migration run也可以通过以下命令来重置数据库
>diesel migration redoDiesel会直接在项目根目录下的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字符串 。
【Rust能不能做后端开发语言?】#[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简洁的代码结构和高效的开发体验 。
文档社区作为一个比较热门的编程语言 , Rust的开发社区还算是比较活跃的 , 不过因为毕竟Rust还是一个非常年轻的编程语言 , 很多第三方框架也都比较年轻 ,有些框架还都没有完全达到1.0版本 , 而且文档相对也是比较简单的 。 不过Rust的稳定性应该会延展到第三方框架的开发上的 , 虽然大型项目可能不一定适合 , 但是绝大多数项目还是可以支持到的 。