陈天 · Rust 编程第一课
陈天
Tubi TV 研发副总裁
新⼈⾸单¥59.9
2200 人已学习
课程目录
已更新 5 讲 / 共 38 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|让Rust成为你的下一门主力语言
免费
前置篇 (3讲)
01|内存:值放堆上还是放栈上,这是一个问题
02|串讲:编程开发中,那些你需要掌握的基本概念
加餐| Rust真的值得我们花时间学习么?
基础篇 (1讲)
03|初窥门径:从你的第一个Rust程序开始!
陈天 · Rust 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

03|初窥门径:从你的第一个Rust程序开始!

你好,我是陈天。储备好前置知识之后,今天我们就正式开始 Rust 语言本身的学习。
学语言最好的捷径就是把自己置身于语言的环境中,而且我们程序员讲究 “get hands dirty”,直接从代码开始学能带来最直观的体验。所以从这一讲开始,你就要在电脑上设置好 Rust 环境了。
今天会讲到很多 Rust 的基础知识,我都精心构造了代码案例来帮你理解,非常推荐你自己一行行敲入这些代码,边写边思考为什么这么写,然后在运行时体会执行和输出的过程。如果遇到了问题,你也可以点击每个例子附带的代码链接,在 Rust playground 中运行。
Rust 安装起来非常方便,你可以用 rustup.rs 中给出的方法,根据你的操作系统进行安装。比如在 unix 系统下,可以直接运行:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
这会在你的系统上安装 Rust 工具链,之后,你就可以在本地用 cargo new 新建 Rust 项目、尝试 Rust 功能。动起手来,试试用 Rust 写你的第一个 hello world 程序吧!
fn main() {
println!("Hello world!");
}
你可以使用任何编辑器来撰写 Rust 代码,我个人偏爱 VSCode,因为它免费,功能强大且速度很快。在 VSCode 下我为 Rust 安装了一些插件,下面是我的安装顺序,你可以参考:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
该试读文章来自付费专栏《陈天 · Rust 编程第一课》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(5)

  • Geek_632da1
    刚学完更新的一讲,很不错的呢!结合汉哥的《rust编程之道》来看,感觉学起来还是很nice的!加油!
    2021-08-27
  • 王硕尧
    Rust 既有statement又有expression,Rust的statement主要用于显式顺序表达式求值以及包含一些表达式:In contrast, statements in Rust serve mostly to contain and explicitly sequence expression evaluation.

    https://doc.rust-lang.org/reference/statements-and-expressions.html
    2021-08-27
  • 王硕尧
    其实 fn(i32) -> i32 这个类型是一个函数指针类型:https://doc.rust-lang.org/reference/types/function-pointer.html
    2021-08-27
  • pedro
    我想很多人不会被课后问题所困扰而是被 Copy 和 Clone,初学时我也很纠结,这里贴上某位大佬的总结:

    Copy 和 Clone 两者的区别和联系有:

    Copy内部没有方法,Clone内部有两个方法。

    Copy trait 是给编译器用的,告诉编译器这个类型默认采用 copy 语义,而不是 move 语义。Clone trait 是给程序员用的,我们必须手动调用clone方法,它才能发挥作用。

    Copy trait不是你想实现就实现,它对类型是有要求的,有些类型就不可能 impl Copy。Clone trait 没有什么前提条件,任何类型都可以实现(unsized 类型除外)。

    Copy trait规定了这个类型在执行变量绑定、函数参数传递、函数返回等场景下的操作方式。即这个类型在这种场景下,必然执行的是“简单内存拷贝”操作,这是由编译器保证的,程序员无法控制。Clone trait 里面的 clone 方法究竟会执行什么操作,则是取决于程序员自己写的逻辑。一般情况下,clone 方法应该执行一个“深拷贝”操作,但这不是强制的,如果你愿意,也可以在里面启动一个人工智能程序,都是有可能的。

    链接:https://zhuanlan.zhihu.com/p/21730929
    2021-08-27
  • 赵岩松

    文中的"Rust 没有语句(statement),只有表达式(expression)"表述我认为是错误的,
    我猜这里想表达的内容应该类似于《Rust程序设计语言中》的如下语句
    "Rust 是一门基于表达式(expression-based)的语言,这是一个需要理解的(不同于其他语言)重要区别"
    但是我的观点是:Rust既存在语句也存在表达式
    我的依据为书中接下来的内容
    "语句(Statements)是执行一些操作但不返回值的指令。表达式(Expressions)计算并产生一个值"
    书中还附带了一个简单的例子,在这里我大体描述一下
    `let y = 6;`中,6为一个表达式,它计算出的值是 6,`let y = 6;`做为一个整体是一条语句,他并不返回值,所以我们不能在Rust中这样书写`let x = (let y = 6);`
    关于这个问题还有来自交流群内"Tai Huei"提供的截图中的文字作为依据
    "Statements are instructions that do something, they do not return a value. Expressions evaluate to a value, they return that value"
    "Rust is an expression-oriented language. This means that most things are expressions, and evaluate to some kind of value. However, there are also statements. -Steve Klabnik(member if the Rust core team)"
    2021-08-27
收起评论
5
返回
顶部