Rust 编程语言极简教程 --- Hello World


Rust 简介

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。

Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。截至目前( 2020 年 1 月)最新的编译器版本是 1.41.0。

Rust 官方在线工具: https://play.rust-lang.org/

为什么选择 Rust?

高性能
Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

可靠性
Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

生产力
Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。

安装

$ curl https://sh.rustup.rs -sSf | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust programming 
language, and its package manager, Cargo.
           
...

安装检查:

$ rustc -V
rustc 1.21.0 (3b72af97e 2017-10-09)
$ cargo -V
cargo 0.22.0 (3423351a5 2017-10-06)

更新版本:

$ rustup update
info: syncing channel updates for 'stable-x86_64-apple-darwin'


info: latest update on 2020-08-27, rust version 1.46.0 (04488afe3 2020-08-24)
info: downloading component 'rustc'

搭建开发环境

IDEA plugin

Rust language support:

https://plugins.jetbrains.com/plugin/8182-rust

在VS Code中开发

在线图书

https://doc.rust-lang.org/book/

Rust 实例学习

https://rustbyexample.com/hello.html

Introduction

  1. Hello World
fn main(){
    println!("Hello World!");
}

build and

1.1. Comments
1.2. Formatted print
1.2.1. Debug
1.2.2. Display
1.2.2.1. Testcase: List
1.2.3. Formatting

  1. Primitives
    2.1. Literals and operators
    2.2. Tuples
    2.3. Arrays and Slices
  2. Custom Types
    3.1. Structures
    3.2. Enums
    3.2.1. use
    3.2.2. C-like
    3.2.3. Testcase: linked-list
    3.3. constants
  3. Variable Bindings
    4.1. Mutability
    4.2. Scope and Shadowing
    4.3. Declare first
  4. Types
    5.1. Casting
    5.2. Literals
    5.3. Inference
    5.4. Aliasing
  5. Conversion
    6.1. From and Into
    6.2. To and From String
  6. Expressions
  7. Flow Control
    8.1. if/else
    8.2. loop
    8.2.1. Nesting and labels
    8.2.2. Returning from loops
    8.3. while
    8.4. for and range
    8.5. match
    8.5.1. Destructuring
    8.5.1.1. tuples
    8.5.1.2. enums
    8.5.1.3. pointers/ref
    8.5.1.4. structs
    8.5.2. Guards
    8.5.3. Binding
    8.6. if let
    8.7. while let
  8. Functions
    9.1. Methods
    9.2. Closures
    9.2.1. Capturing
    9.2.2. As input parameters
    9.2.3. Type anonymity
    9.2.4. Input functions
    9.2.5. As output parameters
    9.2.6. Examples in std
    9.2.6.1. Iterator::any
    9.2.6.2. Iterator::find
    9.3. Higher Order Functions
  9. Modules
    10.1. Visibility
    10.2. Struct visibility
    10.3. The use declaration
    10.4. super and self
    10.5. File hierarchy
  10. Crates
    11.1. Library
    11.2. extern crate
  11. Attributes
    12.1. dead_code
    12.2. Crates
    12.3. cfg
    12.3.1. Custom
  12. Generics
    13.1. Functions
    13.2. Implementation
    13.3. Traits
    13.4. Bounds
    13.4.1. Testcase: empty bounds
    13.5. Multiple bounds
    13.6. Where clauses
    13.7. New Type Idiom
    13.8. Associated items
    13.8.1. The Problem
    13.8.2. Associated types
    13.9. Phantom type parameters
    13.9.1. Testcase: unit clarification
  13. Scoping rules
    14.1. RAII
    14.2. Ownership and moves
    14.2.1. Mutability
    14.3. Borrowing
    14.3.1. Mutability
    14.3.2. Freezing
    14.3.3. Aliasing
    14.3.4. The ref pattern
    14.4. Lifetimes
    14.4.1. Explicit annotation
    14.4.2. Functions
    14.4.3. Methods
    14.4.4. Structs
    14.4.5. Bounds
    14.4.6. Coercion
    14.4.7. static
    14.4.8. elision
  14. Traits
    15.1. Derive
    15.2. Operator Overloading
    15.3. Drop
    15.4. Iterators
    15.5. Clone
  15. macro_rules!
    16.1. Syntax
    16.1.1. Designators
    16.1.2. Overload
    16.1.3. Repeat
    16.2. DRY (Don't Repeat Yourself)
    16.3. DSL (Domain Specific Languages)
    16.4. Variadics
  16. Error handling
    17.1. panic
    17.2. Option & unwrap
    17.2.1. Combinators: map
    17.2.2. Combinators: and_then
    17.3. Result
    17.3.1. map for Result
    17.3.2. aliases for Result
    17.3.3. Early returns
    17.3.4. Introducing ?
    17.4. Multiple error types
    17.4.1. Pulling Results out of Options
    17.4.2. Defining an error type
    17.4.3. Boxing errors
    17.4.4. Other uses of ?
    17.4.5. Wrapping errors
    17.5. Iterating over Results
  17. Std library types
    18.1. Box, stack and heap
    18.2. Vectors
    18.3. Strings
    18.4. Option
    18.5. Result
    18.5.1. ?
    18.6. panic!
    18.7. HashMap
    18.7.1. Alternate/custom key types
    18.7.2. HashSet
  18. Std misc
    19.1. Threads
    19.1.1. Testcase: map-reduce
    19.2. Channels
    19.3. Path
    19.4. File I/O
    19.4.1. open
    19.4.2. create
    19.5. Child processes
    19.5.1. Pipes
    19.5.2. Wait
    19.6. Filesystem Operations
    19.7. Program arguments
    19.7.1. Argument parsing
    19.8. Foreign Function Interface
  19. Meta
    20.1. Documentation
    20.2. Testing
  20. Unsafe Operations

参考资料

https://www.rust-lang.org/zh-CN/tools
https://www.runoob.com/rust/rust-tutorial.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容