颜清华 发表于 前天 17:23

rust学习一、搭建rust开发环境(简单)

最近希望学习一些新的,选择了rust.
本篇介绍怎么搭建一个非常简单的windows开发环境,以及如何使用cargo 命令
1、搭建开发环境(windows11)

a.登录官网

https://www.rust-lang.org/tools/install
非常贴心地建议:Using rustup (Recommended)
意思就是先装rustup,之后按照要求即可成功。
一看就明白,细节此处略。
 
b.安装rustup

一看就明白,此处略。注意选64位的即可。现阶段使用32位系统的应该极其罕见了。
 
c.安装 cargo script 或者 rust-script


注:应该使用rust-script,不过rust-script实际是源自cargo-script,二者操作起来没有太多的分别。
安装cargo-script示例
cargo install cargo-script

注意:时间有一点点久。
测试
cargo script main.rs
这个东西可以运行一个单独的rs文件,在学习基础的时候非常有用
注:cargo-script很久没有更新(应该已经废弃了),建议使用rust-script之类的。
 
d.安装ide

有多个选择,包括eclipse,jetbrain(rustover),vscode。
如果要安装jetbrain的,可以下载https://www.jetbrains.com/rust//download/download-thanks.html?platform=windows
类似rustover这样的工具的好处之一:看标准库和外部单元包的代码会更加方便一些。
 
个人推荐使用vscode,因为插件多,性能可以接受,不像Jetbrain那样总是浪费资源。
vscode中首推插件是rust-analyzer,这是rust的官方插件,极其强大,并不逊色于rust-over(我就用了2~3次)。官方对这个插件的维护极其用心,基本
隔天就更新,
 
在初学阶段,个人更喜欢使用cargo的命令行来运行。强烈建议初学者这样入门更好一些。
如果,您比较在意阅读源码,可以使用rustover,这个方面rustover能过提供更好的源码链接,但vs的差距也不大。
 
e.找几个值得关注的网站/书籍


[*]官网  https://www.rust-lang.org/  流畅,不需要fq
       参考手册: https://doc.rust-lang.org/reference/introduction.html
       这个文档可以辅助其它友好型更高的文档,帮助快速入门,毕竟只是参考书,不太适合作为入门书籍。

[*]中文入门 https://kaisery.github.io/trpl-zh-cn/foreword.html   ,入门看看还是不错的。如果要适配版本,需要看英文https://www.rust-lang.org/
       这是英文书籍(作者:Steve Klabnik ,Carol Nichols)的中译电子版。       该英文有一个中译 是电子工业出版社出版的(毛靖凯、唐刚、沙渺 翻译)。
      我只能说史蒂夫和卡罗尔二人是懂得开发、懂得写书、懂得教育,内容编排的极好!循循善诱,由浅入深、通俗易懂!
       强烈推荐!

[*]https://rustwiki.org/   中文网站,内容比较杂乱,可能友好性某些方面还不如rust官网。可以看看
[*]https://zhuanlan.zhihu.com/p/688906139  知乎关于rust组件的
[*]https://lib.rs/  用于搜索rust有关的库,内容极多, 看来rust还是挺受欢饮
[*]https://crates.io/ 流畅,不需要fq
[*]https://course.rs/  这个好像也还可以
[*]https://www.rustwiki.org.cn/zh-CN/cargo/index.html   Cargo 中文手册,这个必须掌握。比cargo 命令自己提供的信息更全和友好。就是需要注意版本问题
入门大体是够了。
本人习惯上,看书和练习为主,比较少观看视频。网络上还是有不少rust学习的一些视频。
但个人建议从看书开始,并以看书和练习为主。
可以在上厕所、出行、或者不情愿的场景中看看学习视频,作为一个补充!如果网课那么好,三年疫情大家就不应该抱怨了!
 
特别注意: 中文版本文档更新滞后,有时会发现一些文档是错误的!!!
2、cargo命令学习

这是一个极其重要的工具,某种程度上类似mvn,但是比后者强大太多了。
关于cargo的完整帮助,可以看在线文档 https://www.rustwiki.org.cn/zh-CN/cargo/index.html
 
2.1 查看cargo参数

在cmd下执行 cargo --help 可以查看常见的命令,具体效果因版本不同而不同,以下是1.81.0
cargo --help

 
如果要看更多的可以输入
cargo --list

 
如果想看更加详细,则可以看官网的文档:
https://doc.rust-lang.org/book/
  
2.2 常见的cargo命令

以下假设工程是在windows E:\learning\gitee\learnRust下,为了便于行文,以下使用$project替代

[*]安装/卸载三方包(可执行程序)  cargo install/uninstall. install有不少参数,包括可以查看安装了什么可执行程序
      cargo install --list可以查看安装了什么:
 

 

[*]更新依赖  cargo update
[*]查找包(crate) cargo search
[*]查看项目依赖包 cargo tree
      这个命令的说明比较多,常见的如cargo tree --depth n ,其中n是一个自然数

 

[*]工程-创建    cargo new projectName
       在$project下会生成cargo.toml文件,这个文件可以编辑。更多信息只能阅读高级内容,此处略。

[*]工程-重新初始化 cargo init ,在一个存在的目录中执行初始化
[*]工程-添加/删除依赖 cargo add/remove(rm) ...
       会修改cargo.toml,类似maven修改pom.xml

[*]工程-构建    cargo build/b
       在$project\target\debug 生成debug版本

[*]工程-发布    cargo build --realease
       在$project\target\release 下生成发布版本

[*]工程-运行测试版本 cargo run/r
      run命令有许多参数和选项,可以通过cargo help run来阅读,也可以看有关资料。
      特别注意,如果需要传递一些特别的参数,则必须形如:
      cargo run  --  xxx xxx  xxx    
      这里的 -- 表示之后的参数都是传递给程序的,而不是cargo的。
      如:
      cargo run -- --help  给程序传递参数 "--help"
      如果直接输入cargo run --help xxxx   xxx  ,那么会显示cargo的回显信息,不会执行程序。


[*]工程-运行发布版本  cargo run --release / -r

[*]工程-检查  cargo check/c
[*]工程-测试  cargo test/t
       这个命令在开发阶段会被大量使用,值得好好研究。

[*]工程-移除target目录 cargo clean
[*]工程-发布 cargo publish 打包和上传到仓库
注意,cargo还为其中几个极其常用的命令提供了缩写,分别是:

[*]build - b
[*]check -c
[*]run -r
[*]test -t
[*]remove -rm
 
2.3 cargo其它命令

其它的主要是一些关于仓库(包括代码仓库git和cargo仓库)的,以及其它一些乱七八糟的常规命令,例如
查看版本  cargo --version
查看命令帮助 cargo help xxx,例如cargo help run
查看文档 cargo doc ,这还是不错的
第一次运行的时候,cargo会先下载文档:

下载了之后就可以查看了 cargo doc --open ,会在浏览器上打开当前项目有关的文档
实际就是在$project\target\doc下创建html,并打开index.html。
这个还是非常方便的。
例如 :
cargo doc --open --package tokio  
这会下载tokio的资料,这样可以本地查看,如此可以避免网络延迟导致的时间浪费。
 
具体略。
 
3、其它几个命令

rustup   -- 安装rust工具链,构建开发环境,包括切换不同版本,某些时候可以起到类似conda的作用
rustc     -- rust编译器,这个是实际核心。最体贴的编译器之一,大概就没有更体贴的。

通常不需要具体了解rustc这个命令,因为在ide中这都是ide自动调用的,亲自使用rustc的机会很好,就好比我们很少亲自在命令行中输入java(除了部署的时候)
 
3.1、rustup

虽然很少用,但是极其重要的命令之一

因为可以用它来升级工具链,这里就包括了cargo命令。
rustup的几个重用:
1.构建rust开发环境,通过rustup update可以更新工具链的版本

例如上图就是展示了一个rust环境更新的示意图..
2.切换rust版本,类似python的conda的作用. 命令时rustup default xxx ,整个xxx是版本号.
3.添加一些组件,类似cargo
其它还有文档之类的...
 
4、ide(集成开发环境)+vscode

在经过一段时间使用后,我决定使用vscode作为我的ide。
优势:

[*]免费
[*]插件极多
[*]功能也很足
[*]资源占用少
作为初学者或者是精通rust的都是不错的。
注:如果rust的技能很一般,但是又赶项目,还是强烈建议使用专业的rustover。否则rust的所有权和生命周期会让半桶水的rust程序员奔溃!
 
现在ai编码助手极多,可以根据自己的意愿安装,诸如comate,copilot等等。
在入门阶段,建议不要倚重于ai,否则不会学到什么东西的。不要误把ai懂得当做自己懂得,那就大错特错了!
ai的存在,不应以猪化人类智能为代价!
但可以让ai帮助编写重复性的简单代码,帮助阅读一些源码!
 
5、切换rust版本

rust的版本大体可以这么划分
按照是否稳定
stable  --稳定版本,应该作为生产用
nightly -- 学习用
beta     -- 测试版本
按照年份
2015
2018
2021(这是截止目前的稳定版本)
2024(好像还没有发布)
 
使用rustup可以完成类似python的conda+pip的功能。
 
5.1   安装不同的工具链

要切换版本,需要安装不同版本的工具链
rustup toolchain  命令可以做这个事情。

除了官方的stable,nightly,beta,有可以安装其它版本,例如安装:
rustup toolchain install 1.64.0
使用这种简单的格式,rustup能够识别当前的平台,会自动帮我们选择需要的版本,例如windows用windows,linux用linux的。
 
那么怎么知道官方提供了哪些版本?
也许通过github更容易一些:https://github.com/rust-lang/rust
 
5.2、如何在开发环境切换

和许多语言一样有切换开发环境版本的命令/工作。例如python可以用conda来切换,node.js使用nvm。
主要使用rustup命令进行切换:
全局切换
# 切换为 stable 版本(默认推荐)
rustup default stable
# 切换为 nightly 版本(启用最新实验特性)
rustup default nightly
# 切换为 beta 版本(介于 stable 和 nightly 之间)
rustup default beta
# 切换为特定版本
rustup default 1.64.0 
项目切换
# 覆盖为 stable
rustup override set stable
# 覆盖为 nightly
rustup override set nightly
# 移除覆盖(恢复全局默认版本)
rustup override unset 
切换后可以进行验证: rustup show

 
6、小结

rust的开发环境很友好,令人惊讶。个人觉得比学习java更加方便。这是因为有个强大的cargo工具。
所以掌握cargo工具非常有必要,有了这个,即使没有专业的ide,也可以修改、编译、发布程序。
cargo的命令除了固有的一些,还有许多命令是可以通过cargo install而获得,例如cargo script
rust-script 是一个很强大的工具,非常适合初学者学习,强烈建议初学者掌握这个!在初级阶段,集成工具不是那么重要,集成工具对于单独调试倒是挺好用的。
就ide而言,我个人更倾向于使用vsCode,足够灵巧,又不像rustover那么无谓地耗费资源!
 
rust的有关事物的命名都十分古怪,什么rust,cargo,crate...  
希望后面rust不要为了创新而创新,弄一些非业内公知的名词,徒然浪费大家的时间。
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: rust学习一、搭建rust开发环境(简单)