前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第1章Hello world 2/5:如何同时安装多个版本的Rust工具链:运行第一个程序

第1章Hello world 2/5:如何同时安装多个版本的Rust工具链:运行第一个程序

原创
作者头像
程序员吾真本
修改2024-06-10 19:52:25
1240
修改2024-06-10 19:52:25
举报
文章被收录于专栏:Rust避坑式入门

讲动人的故事,写懂人的代码

1.4.3 如何同时安装多个版本的Rust工具链

赵可菲:“多个版本的Rust工具链能一起装吗?那本Rust书上可没这个。我知道在Java世界里,SDKMAN!能做这个。”

贾克强:“想要装多个版本的Rust工具链,只要5步就行。”

1.4.3.1 如何列出已安装的工具链

贾克强:“第1步,我们得看看已经安装了哪些工具链。”

“如果你想一眼就看出已安装的 Rust 工具链有哪些版本,直接运行rustup toolchain list就行了。”

“然后你的屏幕上就会显示这些东西。”

代码语言:javascript
复制
 jkq@mbp  ~  rustup toolchain list
stable-aarch64-apple-darwin (default)

“这就表示,我电脑里就只装了稳定版的工具链哦。”

“如果你想了解更多关于你的Rust开发环境的小秘密,像Rust工具链的版本列表,rustup的home目录在哪,或者rustc的版本号,只需运行一个简单的命令rustup show。”

“屏幕上会显示出更详尽的信息。”

代码语言:javascript
复制
 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)

1.4.3.2 如何列出所有可供安装的Rust版本

贾克强:“第2步,我们来看看有哪些Rust版本可以安装。”

“唉,有点小遗憾,rustup工具并没有提供这个功能。不过别担心,上网搜一下‘rust versions’就能找到答案(见图1.1)。”

图1.1 Rust版本列表
图1.1 Rust版本列表

赵可菲:“哈哈,Java工具链终于在某些方面超越Rust工具链了。在Java的世界,我们只须用SDKMAN!运行一下sdk list java,就能列出所有能装的JDK版本,而且还会标出哪些是已经安装的版本哦。”

贾克强向赵可菲竖起了大拇指,表示赞同。

1.4.3.3 如何安装特定版本的Rust

贾克强:“那么,第3步,我们就来安装一下Rust的特定版本。”

“举个例子,如果我们想要安装Rust版本列表里的1.66.0这个版本,那就直接运行命令rustup toolchain install 1.66.0就行了。”

代码语言:javascript
复制
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这个命令来检查一下是否安装好了。”

代码语言:javascript
复制
 jkq@mbp  ~  rustup toolchain list
stable-aarch64-apple-darwin (default)
1.66.0-aarch64-apple-darwin

“屏幕上现在显示的是1.66.0这个版本哦。”

1.4.3.4 如何切换不同版本的Rust

赵可菲:“那个stable后面跟的(default)是啥意思呢?”

贾克强:“我来解释一下。在第4步,我们要切换Rust的不同版本。“

"跟在某个Rust版本后面的‘default’的意思就是,我们现在正在用的,就是这个版本哦。”

“想换到1.66.0这个版本,运行命令rustup default 1.66.0就可以啦。”

代码语言:javascript
复制
 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后面去了。"

代码语言:javascript
复制
 jkq@mbp  ~  rustup toolchain list
stable-aarch64-apple-darwin
1.66.0-aarch64-apple-darwin (default)

1.4.3.5 如何删除不需要的Rust版本

席双嘉:“如果我不想要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版。”

代码语言:javascript
复制
 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)

"再看一下,切换成功了没?"

代码语言:javascript
复制
 jkq@mbp  ~  rustup toolchain list
stable-aarch64-apple-darwin (default)
1.66.0-aarch64-apple-darwin

“最后咱们运行rustup uninstall 1.66.0,再把1.66.0删了吧。”

代码语言:javascript
复制
 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

“检查一下,删得怎么样了?”

代码语言:javascript
复制
 jkq@mbp  ~  rustup toolchain list
stable-aarch64-apple-darwin (default)

赵可菲:“嘿,删除成功了哦。1.66.0不见了。”

1.4.4 如何升级Rust工具链和rustup

贾克强:“Rust的版本更新嘛,简直就像海浪一样,一波接一波的。“

"Stable版本,就是大家都在用的那个,像大海的潮汐一样,每6周就有新的一次。“

"所以啊,你要是想跟上Rust的步伐,那就得经常更新你的Rust工具链和rustup程序本身啦。"

"想要做到这一点,你得经常运行rustup update这个命令哦。“

代码语言:javascript
复制
 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工具本身更新。”

1.5 创建和运行第一个Rust程序:Hello world

贾克强:”现在我们要编写第一个Rust程序Hello world了。“

”大家当然可以照着Rust书上一开始讲的那样,一点点用手敲代码。“

”但用工具生成一个带有Hello world代码的项目,会更方便。“

赵可菲:“创建新项目真是小菜一碟。书里写的超详细的,直接运行cargo new helloworld就搞定了。”

贾克强笑着指着赵可菲的屏幕说:“哈哈,等等!项目名要用锈族的snake_case风格哈。”

赵可菲:”锈族?“

贾克强:“其实嘛,Rust在英文里就是铁锈的意思,所以我们国内的朋友们就有直接叫Rust程序员为锈族的啦。“

”但是在国外,Rust程序员都爱叫自己甲壳族(Rustaceans),因为这个词跟甲壳生物Crustacean差不多嘛。“

”有一些外国的程序员就把那个橙色的螃蟹Ferris当做Rust程序员的非官方吉祥物了(如图1.1)。“

图1.2 有一些外国的程序员就把那个橙色的螃蟹Ferris当做Rust程序员的非官方吉祥物
图1.2 有一些外国的程序员就把那个橙色的螃蟹Ferris当做Rust程序员的非官方吉祥物

"咱们锈族或者甲壳族,对于所有的变量名、方法名、函数名、项目名、包名和模块名,都喜欢用snake_case风格哟。只有类名,我们才会用PascalCase。"

"snake_case风格,很简单明了,就是所有的单词都是小写,用下划线连接起来。”

赵可菲:“哦,我可能需要一点时间来适应这个锈族的习惯。”

她一边说,一边把命令改成cargo new hello_world

贾克强:“如果你想对比Rust、Java和C++这三门语言的代码,那么就可以为每种语言都创建一个Hello world项目。你可以在这个Rust项目名后面加个’_rust’。”

赵可菲:“好主意!”

她把命令改成cargo new hello_world_rust

代码语言:javascript
复制
 zkf@mbp  ~  cargo new hello_world_rust
     Created binary (application) `hello_world_rust` package

“在Java的世界里,给项目起名字,真没有什么硬性规定。”

席双嘉:“C++这边也是如此,没有定论。”

席双嘉告诉赵可菲:“咱们搞定新项目后,就用git提交一次,怎么样?每改一点点就提交一次,这样就能明显看出哪些文件变了。”

赵可菲回应:“这主意不错。不过,我可没那么有耐心。这个提交的事你来吧。”

“没问题。“席双嘉接过键盘,顺手就用git提交了代码。

赵可菲接着又输入了cargo run来启动程序,屏幕上出现了“Hello, world!”。

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.4.3 如何同时安装多个版本的Rust工具链
    • 1.4.3.1 如何列出已安装的工具链
      • 1.4.3.2 如何列出所有可供安装的Rust版本
        • 1.4.3.3 如何安装特定版本的Rust
          • 1.4.3.4 如何切换不同版本的Rust
            • 1.4.3.5 如何删除不需要的Rust版本
            • 1.4.4 如何升级Rust工具链和rustup
            • 1.5 创建和运行第一个Rust程序:Hello world
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档