Rust能不能做后端开发语言?
文章插图
背景图片 来自 Markus Spiske on Unsplash
ProjectX只是现在我在做的一个项目的名称 , 我计划在整个项目的过程中做更多的尝试 , 并且尽可能的将过程记录下来 。 如果感兴趣可以关注我 , 非常欢迎给我或是ProjectX提提你的建议 。
这次ProjectX在选择后端开发语言的时候 , 我不会考虑我自己的熟悉程度和之前的积累 , 希望可以比较客观的选择一个适合的后端语言 , 我也可以通过这个过程了解更多后端语言 。 目前计划尝试的后端语言有:PHP、JAVA、Node.js、Go、Rust、Ruby、Python 。 没有案例的分享都是耍流氓 , 我用这几个语言统一做一个简单的数据查询返回的API接口 , 来从服务器支持、开发环境搭建、RESTful路径设置、数据库连接、语言结构和文档社区丰富度六个方面来聊聊我自己的感受 。
语言简介相对于其他语言来说 , Rust属于最新的一个成员 。 最早由Mozilla于2014年4月9日发布 。 Rust是一款高级通用语言 , 而且属于少有的一款兼顾开发和执行效率的编程语言 。 Rust结合了脚本语言的语法结构和C语言编译执行效率 , 并且具有类似垃圾回收和数据类型及所有权系统等功能 , 所以可靠性和高性能运行都属于Rust的特色 。 虽然是一个非常年轻的编程语言 , 但是Rust可以算是最近几年最流行的编程语言 。 5月发布的Stack Overflow 2020开发者调查中 , Rust被86.1%开发者选择为“最喜欢”的编程语言 , 比第二名TypeScript高出近20% 。 虽然Rust并不是一个专属的网络应用开发语言 , 但是作为一个以安全著称的编辑语言 , 实际上是非常适合网络开发的 。 而且因为是编译型语言 , 编译器也能在过程中就安全稳定的问题作出提醒 , 作为后端网络开发还是不错的一个优势 。
文章插图
来自mozilla的Rust
服务器支持Rust的通用库中已经包含了类似TcpListener这样的网络通讯库 , 可以直接通过调用std : : net 下面的TcpListener来直接监听Tcp端口 , 然后再处理Request 。 这点上与一些脚本型的编程语言比要自由得很多 。 Rust作为比较流行的编程语言 , 也有不少第三方HTTP库来支持Web开发 , 可以不用再花时间从底层开发 , 比较热门的库像Hyper或者Tide都是被不少Web开发框架用到的 。 Rust下Web开发框架也不少 , 比较热门的有Rocket、Actix-Web、Tower-web、Warp等等框架 。 因为初次接触Rust , 所以还是先从比较成熟的框架Rocket来作Demo的尝试 , 相对文档会比较完善一些 。 不过 , 根据网上的一些讨论 , Rocket或是Actix-Web虽然比较热门 , 但是因为基于比较老的hyper库 , 所以可能对于一些功能不支持 , 例如Rocket不支持Async/Wait功能 。 不过总的来说Rust对于服务器的支持还是不错的 , 而且就算找不到合适的开发框架 , 也可以从底层开发 , 虽然比较浪费时间 。
文章插图
Rocket
IDE VS Editor
文章插图
Rust基本支持主流的编辑器
Rust基本上没有直接IDE , 只是通过插件的方式集合在一些IDE或者编辑器中 , Rust对于主流的编辑器基本都支持 。 因为对于VS Code比较熟悉也就直接通过VS Code安装了Rust插件 , 然后结合通过以下的shell 安装好Rust以及Cargo , 就基本安装好了开发环境 。
curl --proto '=https' --tlsv1.2 -sSf| sh
Rust会通过Cargo来处理依赖的库 , 而且在编译的时候来拉取的 , 因为一些众所周知的网络问题 , 拉取速度非常慢 。 需要将第三方库的注册表网站crates.io换成国内镜像 。 修改成国内镜像的方式 , 在cargo安装文件夹下新建config文件 , 一般cargo的安装位置如下:
$HOME/.cargo
然后在新建的config文件中加入国内镜像的信息 , 例如使用gitee的镜像的话 , 文件内容如下:
[source.crates-io]replace-with='crates-cn'[source.crates-cn]registry=""
不过使用之后 , 发现gitee的index并不是最新的 , 就像最新的Rocket版本0.4.5就没有被收入 , 所以换成了中科大的镜像 , 文件内容可以改成相应的git链接 , 如下
[source.crates-io]replace-with='ustc'[source.ustc]registry=""
虽然说Rust没有自己的专属IDE , 不过Editor+插件的方式基本可以雷同于IDE , 而且整体开发环境的配置还是非常直观的 。
文章插图
- 工程师|AWS偏爱Rust,已将Rust编译器团队负责人收入囊中
- Note9|0点首销!Redmi Note9系列这几点你怎能不心动?
- 盒马鲜生能不能逃过易果生鲜的下场?
- 明基E582智能投影仪上手体验,无智能不商务的办公新宠儿
- 第23问:3节点MGR集群,能不能将一个节点放在地球另一端?
- Rust的不足之处,让它无法成为一门成熟的编程语言
- 域名|【声音】美国到底能不能给中国断网?
- 3块多的PSP卡套能不能用?实测很好用,让我的PSP又复活了
- 台积|台积电、中芯国际、ASML三家的大股东是谁?说出来你可能不信
- 不行|电脑运行慢并不是它的性能不行,关掉一个开关,让你电脑飞起来