讲动人的故事,写懂人的代码
赵可菲:“多个版本的Rust工具链能一起装吗?那本Rust书上可没这个。我知道在Java世界里,SDKMAN!能做这个。”
贾克强:“想要装多个版本的Rust工具链,只要5步就行。”
贾克强:“第1步,我们得看看已经安装了哪些工具链。”
“如果你想一眼就看出已安装的 Rust 工具链有哪些版本,直接运行rustup toolchain list
就行了。”
“然后你的屏幕上就会显示这些东西。”
jkq@mbp ~ rustup toolchain list
stable-aarch64-apple-darwin (default)
“这就表示,我电脑里就只装了稳定版的工具链哦。”
“如果你想了解更多关于你的Rust开发环境的小秘密,像Rust工具链的版本列表,rustup
的home目录在哪,或者rustc
的版本号,只需运行一个简单的命令rustup show
。”
“屏幕上会显示出更详尽的信息。”
jkq@mbp ~ rustup show
Default host: aarch64-apple-darwin
rustup home: /Users/jkq/.rustup
stable-aarch64-apple-darwin (default)
rustc 1.77.2 (25ef9e3d8 2024-04-09)
贾克强:“第2步,我们来看看有哪些Rust版本可以安装。”
“唉,有点小遗憾,rustup
工具并没有提供这个功能。不过别担心,上网搜一下‘rust versions’就能找到答案(见图1.1)。”
赵可菲:“哈哈,Java工具链终于在某些方面超越Rust工具链了。在Java的世界,我们只须用SDKMAN!运行一下sdk list java
,就能列出所有能装的JDK版本,而且还会标出哪些是已经安装的版本哦。”
贾克强向赵可菲竖起了大拇指,表示赞同。
贾克强:“那么,第3步,我们就来安装一下Rust的特定版本。”
“举个例子,如果我们想要安装Rust版本列表里的1.66.0这个版本,那就直接运行命令rustup toolchain install 1.66.0
就行了。”
jkq@mbp ~ rustup toolchain install 1.66.0
info: syncing channel updates for '1.66.0-aarch64-apple-darwin'
info: latest update on 2022-12-15, rust version 1.66.0 (69f9c33d7 2022-12-12)
info: downloading component 'cargo'
...
info: installing component 'rustfmt'
1.66.0-aarch64-apple-darwin installed - rustc 1.66.0 (69f9c33d7 2022-12-12)
info: checking for self-update
“装完以后,可以用rustup toolchain list
这个命令来检查一下是否安装好了。”
jkq@mbp ~ rustup toolchain list
stable-aarch64-apple-darwin (default)
1.66.0-aarch64-apple-darwin
“屏幕上现在显示的是1.66.0这个版本哦。”
赵可菲:“那个stable
后面跟的(default)
是啥意思呢?”
贾克强:“我来解释一下。在第4步,我们要切换Rust的不同版本。“
"跟在某个Rust版本后面的‘default’的意思就是,我们现在正在用的,就是这个版本哦。”
“想换到1.66.0这个版本,运行命令rustup default 1.66.0
就可以啦。”
jkq@mbp ~ rustup default 1.66.0
info: using existing install for '1.66.0-aarch64-apple-darwin'
info: default toolchain set to '1.66.0-aarch64-apple-darwin'
1.66.0-aarch64-apple-darwin unchanged - rustc 1.66.0 (69f9c33d7 2022-12-12)
“看,屏幕上显示default版本已经是1.66.0啦。”
"再给rustup toolchain list
跑一下,你就能看到default跑到1.66.0后面去了。"
jkq@mbp ~ rustup toolchain list
stable-aarch64-apple-darwin
1.66.0-aarch64-apple-darwin (default)
席双嘉:“如果我不想要1.66.0这个版本,怎么删掉它呢?”
贾克强:“哈哈!这就是我们的第5步,把不需要的Rust版本删掉。”
“你想删1.66.0版对吧。删之前,先看看1.66.0版是不是你现在在用的版本。”
“现在确实是。所以我们得先把Rust的当前版本切换到stable版本,再删1.66.0版。”
“否则,你要是不切换,直接把1.66.0版删了,rustup还是会记得你现在的版本是1.66.0。所以你再用Rust的时候,它还会从网上下载1.66.0版呢。”
“我现在就运行rustup default stable
,把当前版本切换到stable版。”
jkq@mbp ~ rustup default stable
info: using existing install for 'stable-aarch64-apple-darwin'
info: default toolchain set to 'stable-aarch64-apple-darwin'
stable-aarch64-apple-darwin unchanged - rustc 1.77.2 (25ef9e3d8 2024-04-09)
"再看一下,切换成功了没?"
jkq@mbp ~ rustup toolchain list
stable-aarch64-apple-darwin (default)
1.66.0-aarch64-apple-darwin
“最后咱们运行rustup uninstall 1.66.0
,再把1.66.0删了吧。”
jkq@mbp ~ rustup uninstall 1.66.0
info: uninstalling toolchain '1.66.0-aarch64-apple-darwin'
info: toolchain '1.66.0-aarch64-apple-darwin' uninstalled
“检查一下,删得怎么样了?”
jkq@mbp ~ rustup toolchain list
stable-aarch64-apple-darwin (default)
赵可菲:“嘿,删除成功了哦。1.66.0不见了。”
贾克强:“Rust的版本更新嘛,简直就像海浪一样,一波接一波的。“
"Stable版本,就是大家都在用的那个,像大海的潮汐一样,每6周就有新的一次。“
"所以啊,你要是想跟上Rust的步伐,那就得经常更新你的Rust工具链和rustup
程序本身啦。"
"想要做到这一点,你得经常运行rustup update
这个命令哦。“
jkq@mbp ~ rustup update
info: syncing channel updates for 'stable-aarch64-apple-darwin'
info: checking for self-update
stable-aarch64-apple-darwin unchanged - rustc 1.77.2 (25ef9e3d8 2024-04-09)
info: cleaning up downloads & tmp directories
“这个命令嘛,先把所有已经安装的Rust版本给更新了,然后最后才轮到rustup工具本身更新。”
贾克强:”现在我们要编写第一个Rust程序Hello world了。“
”大家当然可以照着Rust书上一开始讲的那样,一点点用手敲代码。“
”但用工具生成一个带有Hello world代码的项目,会更方便。“
赵可菲:“创建新项目真是小菜一碟。书里写的超详细的,直接运行cargo new helloworld
就搞定了。”
贾克强笑着指着赵可菲的屏幕说:“哈哈,等等!项目名要用锈族的snake_case风格哈。”
赵可菲:”锈族?“
贾克强:“其实嘛,Rust在英文里就是铁锈的意思,所以我们国内的朋友们就有直接叫Rust程序员为锈族的啦。“
”但是在国外,Rust程序员都爱叫自己甲壳族(Rustaceans),因为这个词跟甲壳生物Crustacean差不多嘛。“
”有一些外国的程序员就把那个橙色的螃蟹Ferris当做Rust程序员的非官方吉祥物了(如图1.1)。“
"咱们锈族或者甲壳族,对于所有的变量名、方法名、函数名、项目名、包名和模块名,都喜欢用snake_case风格哟。只有类名,我们才会用PascalCase。"
"snake_case风格,很简单明了,就是所有的单词都是小写,用下划线连接起来。”
赵可菲:“哦,我可能需要一点时间来适应这个锈族的习惯。”
她一边说,一边把命令改成cargo new hello_world
。
贾克强:“如果你想对比Rust、Java和C++这三门语言的代码,那么就可以为每种语言都创建一个Hello world项目。你可以在这个Rust项目名后面加个’_rust
’。”
赵可菲:“好主意!”
她把命令改成cargo new hello_world_rust
。
zkf@mbp ~ cargo new hello_world_rust
Created binary (application) `hello_world_rust` package
“在Java的世界里,给项目起名字,真没有什么硬性规定。”
席双嘉:“C++这边也是如此,没有定论。”
席双嘉告诉赵可菲:“咱们搞定新项目后,就用git提交一次,怎么样?每改一点点就提交一次,这样就能明显看出哪些文件变了。”
赵可菲回应:“这主意不错。不过,我可没那么有耐心。这个提交的事你来吧。”
“没问题。“席双嘉接过键盘,顺手就用git提交了代码。
赵可菲接着又输入了cargo run
来启动程序,屏幕上出现了“Hello, world!”。
zkf@mbp ~/hello_world_rust main cargo run
Compiling hello_world_rust v0.1.0 (/Users/zkf/hello_world_rust)
Finished dev profile [unoptimized + debuginfo] target(s) in 5.03s
Running target/debug/hello_world_rust
Hello, world!
(未完待续。)
如果喜欢这篇文章,别忘了给文章点个赞,好鼓励我继续写哦~😃
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。