暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Rust入坑指南之初识

风信子的小屋 2020-03-09
408

If it compiles, then it works

背景

Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。正式宣告诞生是在2015年发布1.0版本,1.0的发布是Rust发展的一个动力。

此后,Rust遵循每三年一大版本的发布

2015年:稳定性

2018年:生产力

2021年:?

Rust在语法上和C++类似,但是设计者想要在保证性能的同时提供更好的内存安全。Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。Rust编译器是在MIT License Apache

License 2.0双重协议声明下的免费开源软件。Rust已经连续四年(2016,2017,2018,2019)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠。


随着近年来Rust及社区的稳步发展,加上近期AWS、微软、Linux等都在拥抱Rust,Rust在系统级编程领域还是很有前景的。


简介

Rust的Logo

Rust社区吉祥物Ferris


特性

  • 零成本抽象

  • 移动语义

  • 保证内存安全

  • 没有数据竞争的线程

  • 基于trait的泛型

  • 模式匹配

  • 类型推断

  • 高效的C绑定


Rust很多特性参考借鉴了其他语言,函数式、类型系统借鉴了Haskell,语法风格等参考了C/C++等等,并拥有独特的性质,比如所有权、生命周期系统


安装

Rustup:Rust安装器和版本管理工具

安装Rust的主要方式是通过Rustup工具,真的是异常友好方便,对于类Unix系统而言,命令行下直接执行以下命令,即可完成安装

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

按照提示安装即可,默认会设置Rust工具链为稳定版、环境变量PATH等信息,执行结束提示:

stable installed - rustc 1.39.0 (4560ea788 2019-11-04) 


Rust is installed now. Great! 


To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH environment variable. Next time you log in this will be done automatically.


To configure your current shell run source $HOME/.cargo/env


正常情况下会自动导入环境变量设置,也可以手动执行

export PATH="$HOME/.cargo/bin:$PATH"

使环境变量生效在用户目录下,执行

source $HOME/.cargo/env

验证是否安装成功:

cargo --version/-V:输出cargo版本信息

rustc --version/-V:输出rustc版本信息

cargo是Rust的构建工具和包管理器,使用Rustup安装的时候,会默认安装cargo最新的稳定版,cargo很像Java中的maven、gradle,crate 是一个二进制项或者库。crates.io用来分发包的源代码,所以它主要托管开源代码,类似于maven仓库,Rustc是Rust的编译器

如果安装过程中出现设置错误等信息可以直接参照Rust官网,有中文版,很友好详细,另外学习Rust的官方教程The Book,中文翻译Rust-book-chinese


以上,Rust安装完毕


创建项目

Rust安装完毕之后,即可直接编写Rust了,命令行下执行

cargo new hello-rust

会在当前目录下生成一个hello-rust的新目录

hello-rust 

  |- Cargo.toml 

  |- src 

     |- main.rs

Cargo.toml :Rust的清单文件。其中包含了项目的元数据和依赖库

src/ :编写应用代码的地方

main.rs :默认生成的包含Rust main入口方法的程序


简单介绍一下toml,它的全称是Tom's Obvious Minimal Language,是一种配置文件格式。它的语义是比较明显的,因此易于阅读。同时格式可以明确的映射到hash表,所以也可以被多种语言轻松解析。

使用文本编辑器打开main.rs文件,可以看到连国际惯例的Hello,world已自动生成。fn是Rust函数声明的关键字,Rust使用极简缩写的风格,初次可能觉得不太习惯。main函数是Rust程序执行的入口。当然库函数不依赖main入口

fn main() { 

    println!("Hello, world!");

 }

进入到新创建的目录中,执行cargo run:

$ cargo run 

   Compiling hello-rust v0.1.0 (/Users/fengxinzi/rust/hello-rust) 

     Finished dev [unoptimized + debuginfo] target(s) in 1.34s 

        Running `target/debug/hello-rust`

 Hello, world!


展望

众所周知,在编程语言中,更易读的高级语言和控制底层资源的低级语言是一对矛盾体。Rust想要挑战这一现状,它尝试为开发者提供更好的体验的同时给予开发者控制底层细节的权限。

Rust在设计之初就设定了必须同时兼顾性能和安全性的目标——既要有"底层语言"一样的性能,又要有"高层语言"的安全性(甚至在线程安全性方面比Java/C#等语言更加安全)。这样一种决不妥协的设计哲学,让Rust从一出生开始就注定了不平凡。

毫无疑问,其理念是非常有吸引力的,伴随着语言本身,很多概念晦涩难懂,对于初学者,Rust具有比较陡峭的学习曲线,其近乎苛刻的要求和繁杂的规则,并不适合作为入门语言。


阅读资料

Rust官网学习资料、文档很全,这里简单列一下常用的地址

  1. Rust官网:https://www.rust-lang.org

  2. 官方书籍:https://doc.rust-lang.org/book/

  3. 中文版:https://kaisery.github.io/trpl-zh-cn/

  4. Rust中文社区:https://rust-china.org

文章转载自风信子的小屋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论