Rust是mozilla推出的一款系统级的编程语言,其两大特色在于零开销抽象和安全性。
在大学里时候,就开始注意到rust语言的动态了。
当时,我在啃一本大块头的C++书籍《C++ Primer》,以为rust到处针对到了C++的痛处。
学习rust,即可以让你用不输于C++的特性编程,而又不用花费太多的精力在语法的各类特例和各类细枝末节的坑中。html
优秀的程序员都须要掌握多语言以学习不一样的思惟方式。对于系统级语言,rust是至关优秀的,
最近趁着有点时间,得好好学习一下这门我垂诞已久的语言了。java
<!--more-->git
在大学里时候,就开始注意到rust语言的动态了。当时,我在啃一本大块头的C++书籍《C++ Primer》。程序员
C++是至关难学,其中是由于其由于历史遗留缘由及与C的兼容性,致使语法正交性、统一性差,
要学习的语法点及要避免的踩坑点至关之多,乃至于一部分同窗都是“C++从入门到放弃”了。(我也是)
而剩下一部分说用C++的同窗,其实是C with class,不敢用过高级的特性,怕hold不住。。。github
相似于C++,Rust的定位是一款系统级语言,所以,它具备C++做为系统级语言的全部特色:编程
除此以外,除了拥有C++优势外,它还有:安全
从我了解到的信息来看,还有如下几种对标C++的特色,对于一个初学者,目前感觉还不是很大:bash
第一步,安装rust工具链:
官方网站推荐的方式是:curl
curl https://sh.rustup.rs -sSf | sh
这样,会将rust工具链安装到~/.cargo/bin
目录下,包括rustc、cargo 及 rustup。编程语言
推荐爬墙下载,我选择proxychains:
proxychains curl https://sh.rustup.rs -sSf > tmp.sh sh tmp.sh
第二步:安装IDE。
我推荐使用jetbrains推出的rust插件。找一个jetbrains的IDE安装就好了。
做为一名java码农,我选择idea。与把大象放入冰箱同样轻松,只需简单三步:
好了,新建一个项目,你会发现多了一个rust选择项。
做为初学者,不要花费过多精力在工具链上,首先应该快速搞起一个环境,而后上手语法写几个demo。
做为第一个rust程序,首先来个选择排序压压惊:
fn selection_sort(nums: &mut Vec<i32>) { for i in 0.. nums.len() { let mut min = i; for j in i.. nums.len() { if nums[j] < nums[min] { min = j; } } nums.swap(i, min); } }
rust中的语法不是C系语法,因此熟悉rust的语法须要多多编写代码练习。上面代码涉及到的语法有:
mut
。rust鼓励使用不可变变量。(1..10)
,它实际上建立了一个Range<i32>
类型的对象并迭代。接下来是将Vector转字符串的辅助函数:
fn vector_to_string(nums: &Vec<i32>) -> String { let mut s = String::new(); for i in nums.iter() { s += &(i.to_string() + " "); } return s; }
String::new
暗示出,rust中没有构造函数和new运算符。怎么建立对象?用静态工厂函数。+=
操做,这代表Rust支持运算符重载。最后,main函数:
fn main() { let mut v = vec![9, 2, 5, 4, 8, 12, 1]; selection_sort(&mut v); println!("{}", vector_to_string(&v)); }
vec!
其实是一个宏,rust支持强大的宏,强大到相似lisp的那种。&
是引用符,涉及到全部权和借用的概念。对于有着必定基础的程序员,学习一门语言,我的以为,最有效率的方式是:
最后,有一些值得学习的资料:
对于编程语言的理解,每一个人有着不一样的观点。
就我我的而言,我更赞同《代码大全》中的隐喻,即编程语言是程序员工具箱中的一把趁手的工具,整体而言,它尽可能使用良好的设计避免给程序员形成额外的负担,又具有强大的特性使得程序员能够优雅实现各种需求。包括统一正交的语法、优秀的类型系统、不破坏统一性的适当的语法糖等。