From c6a1737b8212889aeb76f0affa7f904a21677554 Mon Sep 17 00:00:00 2001 From: chenhongtao Date: Mon, 27 Feb 2023 11:18:53 +0800 Subject: [PATCH] chore: add rust --- .../11.编程开发/11.4.rust编程环境搭建.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 docs/deepin进阶教程/11.编程开发/11.4.rust编程环境搭建.md diff --git a/docs/deepin进阶教程/11.编程开发/11.4.rust编程环境搭建.md b/docs/deepin进阶教程/11.编程开发/11.4.rust编程环境搭建.md new file mode 100644 index 0000000..d33e5e2 --- /dev/null +++ b/docs/deepin进阶教程/11.编程开发/11.4.rust编程环境搭建.md @@ -0,0 +1,50 @@ +# 11.4. rust编程环境搭建 + +Rust是Mozilla基金会在2015年发布的编程语言,最开始目的是为了实现一个全新的浏览器内核[Servo](https://github.com/servo/servo),可惜夭折了(先帝创业未半而中道崩殂), Servo 现在交给了linux基金会,可惜也没有什么维护了。但是Rust语言之后独立于Mozilla基金会成立了自己的基金会,之后在各种领域大放光彩。(Servo 在天之灵会开心吧)。 + +Rust语言有很多特点,当然这些也并不是它的特点,都是从函数式借鉴过来的,Result和有结构的枚举也并非它首创,独特的所有权无GC也是从cpp等语言发展来的。不过Rust是将这些整合到一起的语言。 + +有时侯Rust被戏称为更好的cpp,没有裸指针的cpp,其中有个原因就是它确实实现了cpp多年没有实现的愿望,比如消灭nullptr,裸指针,move控制,逼迫开发者使用智能指针等。 + +如果从没有写过函数式等语言的话,你可能会对Rust干掉了继承的行为很困惑,觉得举步维艰。不过对于现代语言来说,推崇的行为是组合大于继承,所以Rust提供了trait,当然显然这个概念也并非Rust第一个发明的。另外库可以使用如`#derive[default]`等语法糖来减少你使用trait时候需要写的代码,所以不要怕。 + +## 11.4.1. 安装 + +请参考[rust](https://www.rust-lang.org/learn/get-started)官网的推荐。 + +``` bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +## 11.4.2 编辑器 + +Rust一般使用的语言提示工具是rust-analyzer, (rls坟头草已经3尺高了令人感慨),你可以在vscode,emacs,vim等工具发现它的身影。使用这个你需要使用lsp的编辑器,vscode你只需要装插件,如果你想使用emacs,可以去参考lsp-mode, vim使用coc.nvim, nvim 可以使用coc或者nvim-lsp。(如果你是使用后三者的话不去看wiki真的太过分了对吧,你会看的对吧) + +### 11.4.3 文档 + +Rust开始主要是两本书 + +[The Book](https://doc.rust-lang.org/book/) +[Rust By Example](https://doc.rust-lang.org/rust-by-example/) + +如果你觉得原版费力的话官方首页有推荐翻译版本。不过也有社区维护的其他book,在这里也捎带介绍 +[Rust 圣经](https://course.rs/about-book.html) +[Rust wiki](https://rustwiki.org/) + +另外如果你需要写异步,你还需要 +[tokio.rs](https://tokio.rs/) +[async book](https://rust-lang.github.io/async-book) + +不过一般就无脑`tokio.spawn`,`await`就可以了。 + +如果需要写gui,比如gtk,(哦,为什么要入这个苦海),你可能需要 +[gtk-rs](https://gtk-rs.org/) + +另外上述网站是使用一个叫做mdbook的工具生成的,我很推荐使用这个工具生成你的网站。 + +忘了重要的一点,使用crate时候需要去参考库的文档,Rust上传crate会编译生成文档,你需要去 + +[Lib.rs](https://lib.rs/) +[docs.rs](https://docs.rs) + +获取每个库的详细文档。