Skip to main content

为什么 Linux 用户应该试一试 Rust | Linux 中国

在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。
Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(2016[1]2017[2] 和 2018[3])在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。
Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。
Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。
Rust 优点:
◈ 内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。
◈ 通用 —— Rust 是适用于任何类型编程的语言
◈ 快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。
◈ 高效 —— Rust 是为了便于并发编程而构建的。
◈ 面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。
◈ 得到很好的支持 —— Rust 有一个令人印象深刻的支持社区[4]
Rust 还强制执行 RAII(资源获取初始化Resource Acquisition Is Initialization)。这意味着当一个对象超出范围时,将调用其析构函数并释放其资源,从而提供防止资源泄漏的屏蔽。它提供了功能抽象和一个很棒的类型系统[5],并具有速度和数学健全性。
简而言之,Rust 是一种令人印象深刻的系统编程语言,具有其它大多数语言所缺乏的功能,使其成为 C、C++ 和 Objective-C 等多年来一直被使用的语言的有力竞争者。
安装 Rust
安装 Rust 是一个相当简单的过程。
  1. $ curl https://sh.rustup.rs -sSf | sh
安装 Rust 后,使用 rustc --version 或 which 命令显示版本信息。
  1. $ which rustc
  2. rustc 1.27.2 (58cc626de 2018-07-18)
  3. $ rustc --version
  4. rustc 1.27.2 (58cc626de 2018-07-18)
Rust 入门
Rust 即使是最简单的代码也与你之前使用过的语言输入的完全不同。
  1. $ cat hello.rs
  2. fn main() {
  3.    // Print a greeting
  4.    println!("Hello, world!");
  5. }
在这些行中,我们正在设置一个函数(main),添加一个描述该函数的注释,并使用 println 语句来创建输出。您可以使用下面显示的命令编译然后运行程序。
  1. $ rustc hello.rs
  2. $ ./hello
  3. Hello, world!
另外,你也可以创建一个“项目”(通常仅用于比这个更复杂的程序!)来保持代码的有序性。
  1. $ mkdir ~/projects
  2. $ cd ~/projects
  3. $ mkdir hello_world
  4. $ cd hello_world
请注意,即使是简单的程序,一旦编译,就会变成相当大的可执行文件。
  1. $ ./hello
  2. Hello, world!
  3. $ ls -l hello*
  4. -rwxrwxr-x 1 shs shs 5486784 Sep 23 19:02 hello     <== executable
  5. -rw-rw-r-- 1 shs shs 68 Sep 23 15:25 hello.rs
当然,这只是一个开始且传统的“Hello, world!” 程序。 Rust 语言具有一系列可帮助你快速进入高级编程技能的功能。
学习 Rust
No Starch Press
Steve Klabnik 和 Carol Nichols 的《Rust 编程语言[6]》 (2018)一书提供了学习 Rust 的最佳方法之一。 这本书由核心开发团队的两名成员撰写,可从 No Starch Press[6] 出版社获得纸制书或者从 rust-lang.org[7] 获得电子书。它已经成为 Rust 开发者社区中的参考书。
在所涉及的众多主题中,你将了解这些高级主题:
◈ 所有权和 borrowing
◈ 安全保障
◈ 测试和错误处理
◈ 智能指针和多线程
◈ 高级模式匹配
◈ 使用 Cargo(内置包管理器)
◈ 使用 Rust 的高级编译器
目录
◈ 前言(Nicholas Matsakis 和 Aaron Turon 编写)
◈ 致谢
◈ 介绍
◈ 第 1 章:新手入门
◈ 第 2 章:猜谜游戏
◈ 第 3 章:通用编程概念
◈ 第 4 章:了解所有权
◈ 第 5 章:结构
◈ 第 6 章:枚举和模式匹配
◈ 第 7 章:模块
◈ 第 8 章:常见集合
◈ 第 9 章:错误处理
◈ 第 10 章:通用类型、特征和生命周期
◈ 第 11 章:测试
◈ 第 12 章:输入/输出项目
◈ 第 13 章:迭代器和闭包
◈ 第 14 章:关于货物和 Crates.io 的更多信息
◈ 第 15 章:智能指针
◈ 第 16 章:并发
◈ 第 17 章:Rust 是面向对象的吗?
◈ 第 18 章:模式
◈ 第 19 章:关于生命周期的更多信息
◈ 第 20 章:高级类型系统功能
◈ 附录 A:关键字
◈ 附录 B:运算符和符号
◈ 附录 C:可衍生的特征
◈ 附录 D:宏
◈ 索引
Rust 编程语言[6]》 将你从基本安装和语言语法带到复杂的主题,例如模块、错误处理、crates(与其他语言中的 “library” 或“package”同义),模块(允许你将你的代码分配到 crate 本身),生命周期等。
可能最重要的是,本书可以让您从基本的编程技巧转向构建和编译复杂、安全且非常有用的程序。
结束
如果你已经准备好用一种非常值得花时间和精力学习并且越来越受欢迎的语言进行一些严肃的编程,那么 Rust 是一个不错的选择!

Comments

Popular posts from this blog

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checking a shared sec

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into /opt/course/1/context_default_no_kubectl.sh , but without the use of k

标 题: 关于Daniel Guo 律师

发信人: q123452017 (水天一色), 信区: I140 标  题: 关于Daniel Guo 律师 关键字: Daniel Guo 发信站: BBS 未名空间站 (Thu Apr 26 02:11:35 2018, 美东) 这些是lz根据亲身经历在 Immigration版上发的帖以及一些关于Daniel Guo 律师的回 帖,希望大家不要被一些马甲帖广告帖所骗,慎重考虑选择律师。 WG 和Guo两家律师对比 1. fully refund的合约上的区别 wegreened家是case不过只要第二次没有file就可以fully refund。郭家是要两次case 没过才给refund,而且只要第二次pl draft好律师就可以不退任何律师费。 2. 回信速度 wegreened家一般24小时内回信。郭律师是在可以快速回复的时候才回复很快,对于需 要时间回复或者是不愿意给出确切答复的时候就回复的比较慢。 比如:lz问过郭律师他们律所在nsc区域最近eb1a的通过率,大家也知道nsc现在杀手如 云,但是郭律师过了两天只回复说让秘书update最近的case然后去网页上查,但是上面 并没有写明tsc还是nsc。 lz还问过郭律师关于准备ps (他要求的文件)的一些问题,模版上有的东西不是很清 楚,但是他一般就是把模版上的东西再copy一遍发过来。 3. 材料区别 (推荐信) 因为我只收到郭律师写的推荐信,所以可以比下两家推荐信 wegreened家推荐信写的比较长,而且每封推荐信会用不同的语气和风格,会包含lz写 的research summary里面的某个方面 郭家四封推荐信都是一个格式,一种语气,连地址,信的称呼都是一样的,怎么看四封 推荐信都是同一个人写出来的。套路基本都是第一段目的,第二段介绍推荐人,第三段 某篇或几篇文章的abstract,最后结论 4. 前期材料准备 wegreened家要按照他们的模版准备一个十几页的research summary。 郭律师在签约之前说的是只需要准备五页左右的summary,但是在lz签完约收到推荐信 ,郭律师又发来一个很长的ps要lz自己填,而且和pl的格式基本差不多。 总结下来,申请自己上心最重要。但是如果选律师,lz更倾向于wegreened,