
都说 rust 难学,我自己跟着 b 站入门教程学完之后觉得 rust 比想象中的更难以上手。学完基础语法之后依旧不太会写,总是写 bug 。rust 语法略微有点怪异,并且限制太多,我如果按照以前写其他语言(例如 go )的习惯是不行的。各位 v 友们学过 rust 分享一波上手经验呗
1 eagleoflqj 2023-07-24 08:06:27 +08:00 via iPhone 想学但还没时间学,对 rust 的了解仅限于它严格的所有权,盲猜 C++程序员是最容易上手的。要不要参考下隔壁贴子 https://v2ex.com/t/959034 |
2 Jirajine 2023-07-24 08:11:01 +08:00 rust 写起来非常爽,在你碰到 async 之前。 |
3 yaott2020 OP @eagleoflqj 我遇到的所有问题都是与所有权相关,copilot 我也有,还没来得及开 |
4 snylonue 2023-07-24 08:15:48 +08:00 多看看官方教程,借助 RA ,clippy 和编译器的提示 |
5 Alias4ck 2023-07-24 08:20:15 +08:00 |
6 dangyuluo 2023-07-24 08:52:02 +08:00 对 C++比较熟悉的话,学 rust只是个语法问题,还有就是记住那么多标准库 |
7 Chaidu 2023-07-24 09:04:08 +08:00 兄弟,自信点,把“感觉”去掉 |
8 dvorakchen1 2023-07-24 09:13:02 +08:00 我要澄清一下:楼主说的没错 |
9 zzzsy 2023-07-24 09:16:40 +08:00 来学学 haskell |
10 summerLast 2023-07-24 09:16:49 +08:00 学习曲线越过 各种智能指针后 就没很陡峭了 |
11 LeegoYih 2023-07-24 09:17:32 +08:00 |
12 tk103331 2023-07-24 09:18:23 +08:00 入过好几次门了 |
13 ns09005264 2023-07-24 09:22:19 +08:00 所有权这点还好,生命周期真的好难,感觉自己理解了,但实际还是不会用。 虽然难,但是用 rust 写东西的话,还是比较爽的,写完后,成功运行的概率非常高。 |
15 flytsuki 2023-07-24 09:27:22 +08:00 入过一次门,然后忘了。。。 |
16 raycool 2023-07-24 09:28:41 +08:00 从入门到再次入门。 |
17 tedzhou1221 2023-07-24 09:34:56 +08:00 一开始我看完官方教程,感觉还好。但当我看了张汉东老师在极客时间上的教学视频后,已经又不会了 |
18 yaott2020 OP 目前用 clion ,配合 cargo check 和 copilot ,感觉好一点了 |
19 laqow 2023-07-24 10:10:32 +08:00 rust 有啥好的讲基础语法数据结构和其他语言区别的纸质书吗?书店只有一两本翻译的,排版惨不忍睹 |
20 largezhou 2023-07-24 10:17:46 +08:00 https://course.rs/about-book.html 这个感觉还可以,还有习题和答案 |
span class="no">21 wupeaking 2023-07-24 10:18:35 +08:00 我大概尝试进了 3 次才入了门,(第 3 次能够在没任何指导下用另外的方法手写链表我觉得我算入门了) 。 感觉要把大部分 rust 的内容过一遍才能写出一个简单的小项目, 而且要学会适应 rust 的编译器错误。 问题是能用 rust 在工作中使用的机会蛮少的, 到现在我也就是把自己工作中已经用其他语言写的几个项目用 rust 再实现一遍。 然后过段时间不使用又忘记了。 |
22 fioncat 2023-07-24 10:18:40 +08:00 学过 c++还是很好上手。你就把它当成编译器强制你用智能指针。 |
23 miniliuke 2023-07-24 10:36:48 +08:00 感觉挺好的,感觉编译器就是个代码漏洞扫描引擎......纠正了许多以前不注意的问题 |
24 fakeshadow 2023-07-24 10:38:20 +08:00 建议同 c/cpp 对照学习,从 gc 语言入手 rust 很容易出现不知所以然的现象。 |
25 Rooger 2023-07-24 10:38:57 +08:00 看过入门的书籍两遍,第一遍比较快,第二遍比较详细的看了,代码也尝试手动编译运行了。 在 B 站看了软件工艺师的入门课程,基本上也是跟着《软件程序设计语言》走下来的。 在极客时间上跟着陈天的《 Rust 编程第一课》仔细的学了下来。但是重点,千万千万不要买 XXX 的 Rust 实战课,请避坑。 然而最终我放弃了在团队中去推 Rust 的想法,毕竟门槛实在太高了,为了所谓的稳定和性能,在要求效率的游戏行为,其实不是特别划算。好多项目上线没有几个月就下线了,性能、稳定以及安全根本没有体现出来。 所以,有些行业不需要 Rust 就能做的很好了。当然,如果只是为了学习,还是比较推荐的,Rust 的许多设计还是很棒的。 |
26 vincent7245 2023-07-24 10:42:44 +08:00 不知道 OP 有没有 C/C++ 的基础,如果真心想在编程语言下功夫的话,先把 C++ 弄明白,再看其他编程语言就都是弟弟了 |
28 sojingle 2023-07-24 10:51:49 +08:00 刚上来被编译器教育是很正常的,能不能学会只在于能不能坚持下去 |
30 weiwenhao 2023-07-24 10:58:19 +08:00 从入门到放弃,确实比较难. |
31 ysn2233 2023-07-24 10:59:30 +08:00 主要是工作中没机会用,一段时间不用就又忘记了 |
32 EchoAI 2023-07-24 11:07:53 +08:00 via iPhone 现在主开发语言使用的就是 Rust ,已经开发了好几个项目了,稳定运行中。后期很轻松,值得多入门几次 |
33 snowstorm666 2023-07-24 11:17:47 +08:00 我觉得还是需要实际中用,如果实际没有使用机会,想要上手太难了,特别容易忘记。前期对我有效的建议是: 1. 直接 copy 代码过来改 2. 直接问 gpt 怎么写 |
34 sadfQED2 2023-07-24 11:20:22 +08:00 via Android 我曾经也学过 rust ,学完没几天,卧槽,咋写的来着,忘了。 这玩意入门难度简直上天了,和以往所有的语言思维方式都不一样,因此极其难入门 |
35 fcfangcc 2023-07-24 11:31:57 +08:00 其实正常逻辑写起来还好,加上 ide 的联想和提示写起来挺爽。直到碰到了 trait + future + pin + send + 范型,一个参数类型定义十几行直接劝退 |
36 Yc1992 2023-07-24 11:33:01 +08:00 用了 rust 终于不再有空指针和段错误了 |
37 zuston 2023-07-24 11:35:10 +08:00 在一个开源项目中使用了 rust 编写,整体还是很舒服的。也是第一次用 rust ,边学边写 |
38 sampeng 2023-07-24 11:40:41 +08:00 面向编译器编程即可。。。。不用担心写 bug 。编译器会鞭笞你 |
39 XIVN1987 2023-07-24 11:41:26 +08:00 rust 这种超强约束的语言适合 AI (机器人)来写,,它们木的感情 |
40 sampeng 2023-07-24 11:41:26 +08:00 @ns09005264 90%写也业务代码不需要用生命周期。只有写非常抽象和通用代码的时候才需要 |
41 loveDiu4ever 2023-07-24 11:52:58 +08:00 入门两次了,我都不知道学完能干啥。 |
42 x1abin 2023-07-24 11:59:54 +08:00 配合 Copilot 辅助工具,写起来就很爽了。 |
43 xfun 2023-07-24 12:00:22 +08:00 @princesswar721 真实了,学完真的不知道干啥 |
44 pocarisweat 2023-07-24 12:07:19 +08:00 via iPhone Rust 的所有权系统其实是把 C++那套最佳实践落实到语法上,然后融合了很多函数式语言( OCaml )的元素。 很多人不理解 C++这类语言的痛点,或者在学校学过一点 C++但印象仅停留在 new 了东西要手动 delete ,学起 Rust 就会造成不知道为什么要这么设计的感觉。 其实这种无 GC 的原生语言确实在很多地方都不是刚需。上次还有 V 友说用 C++写项目太老土了的。 |
45 LiuJiang 2023-07-24 12:42:08 +08:00 楼主说的没错,hhh ,rust 确实难学,我看了文档和语法以及相关介绍,还是没懂能干啥 |
46 OliverDD 2023-07-24 13:05:25 +08:00 学倒还好,难在于保持使用...之前学完就立马给个开源项目提了 PR ,但平时工作接触不到,慢慢就生了... |
47 unnamedhao 2023-07-24 13:40:17 +08:00 入门不容易,放弃容易 |
48 Wanex 2023-07-24 13:48:47 +08:00 之前学过一点,用不到,已经忘了 |
49 datadump 2023-07-24 14:25:20 +08:00 搬砖:包工头时不时抽你一鞭子 写 rust:编译器时不时抽你一鞭子 |
50 aloxaf 2023-07-24 17:09:38 +08:00 @yaott2020 #3 所有权其实不算难,它的规则是很直观的,尤其是对于 C++ 程序员来说( 觉得难,我认为由浅入深可以分为以下几个方面: 1. 习惯这种思考方式,至少能够搞清一个简单变量的所有权。 2. 掌握一些常用 API ,比如怎么从复合数据结构中转移一个值的所有权或者交换两个值。 3. 理解某些复合数据结构中为什么不能直接转移所有权,比如 Vec<String> 中为啥用 v[0] 来直接转移所有权会报错。 4. 闭包的所有权,啥时候用 move ,在循环中怎么 move ,怎么手动创建引用来避免 move (其实这更多的是生命周期问题了 个人认为,Rust 只有异步和生命周期混合起来的时候,才最让人头大…… |
51 mscorlib 2023-07-24 17:37:03 +08:00 与 Rust 斗其乐无穷 |
53 Jirajine 2023-07-24 19:44:41 +08:00 @des 这不是 clone 的问题,在你不使用非常高级、复杂,generic 参数特别多的类型时( async 和基于 async 的框架就是在使用,并且抽象泄漏严重,使用它们你不得不关注内部细节),rust 一点都不困难,仅用 ide 的编译器错误提示可以减少大量其他语言开发时不断编译运行的试错次数。 至于不想处理静态的引用生命周期,替代方法是用 Rc/Arc + clone 顶着,通常你想要一个非静态生命周期的引用不代表你想用 clone 。 |
54 Jirajine 2023-07-24 19:47:51 +08:00 @kljsandjb aysnc rust 太着急了,还没有设计好就急不可耐的稳定化,后面的库/语言改变只能不得不继续屎上雕花,这样下去迟早 rust 会成为第二个 cpp 一样的缝合怪。 |
55 GeruzoniAnsasu 2023-07-24 20:02:45 +08:00 |
56 zhuangzhuang1988 2023-07-24 20:31:37 +08:00 重复入门多次 放弃。。 |
57 hunk 2023-07-24 20:34:32 +08:00 语法读懂是有些略难,但程序跑起来,特别是跨平台编译后跑的稳稳的,感觉贼爽。不用装那么些个依赖库,一个程序搞定。似乎又回到 C 的感觉。 |
58 lsk569937453 2023-07-24 20:58:50 +08:00 vscode+analyzer 开发神器 codeium(chatgpt):如果 github 的 copilot 用不起,用这个神器即可。 异步运行时就用 tokio 。 生命周期就是难。先把简单的了解以后就可以搞开发了。有了 chatgpt 后,学 rust 的难度可以说是指数性下降也不为过把。 |
59 holulu 2023-07-24 21:50:22 +08:00 感觉入门难,其实是把其他语言的习惯带过来了。因为 rust 很多东西的观念跟大部分语言都不一样。如果接触过的语言比较多,估计就没那么难了。因为编程语言能解决的问题和解决方式来来去去就那么几种。 |
60 zcg007 2023-07-24 22:25:08 +08:00 via Android 推荐一下 vlang |
61 nkidgm 2023-07-24 22:28:08 +08:00 哈哈,以前 C++经常被吐槽是世界上最难的编程语言。。。 现在 rust 摘取桂冠了,不过听说 rust 上手后,写出的程序质量还真不错,就是学习周期很长很长。 |
62 Perolong 2023-07-24 23:19:46 +08:00 via Android 打算先 c 写明白再去学 rust |
63 iwdmb 2023-07-25 03:54:49 +08:00 确实入门了好多次 Rust 到现在还没入门 |
64 suyulingxm 2023-07-25 09:09:31 +08:00 rust 就像开飞机,先要熟悉各种规则,起飞了就不用操心了 |
65 franklu 2023-07-25 09:52:54 +08:00 @Jirajine 我感觉你的意思是 async 语法没问题,有问题的是 async 的实现,底层用了太多类型系统导致没做好,使用者没法无缝使用,而且很快就会碰到问题,而一碰到问题就要去看代码代码,是吧? |
66 Jirajine 2023-07-25 10:15:12 +08:00 @franklu 不是说语法没问题,而是语义,或者是整体的设计,还没有完善就急着稳定化,以至于后面发现问题又不能 breaking ,就只能屎上雕花了。 最典型的就是 async trait ,还没设计好之前,就不该把 async 稳定化。 |
68 lynx 2023-07-25 10:37:15 +08:00 学习 rust 最好还是拿实际的项目来练手比较好,我跟周围的工友都是参与线上的 rust 项目核心流程开发之后快速提升的。社区的一些练手项目只能让你熟悉 rust 的语法和规则,实际项目中会遇到更多的问题。 另外现在 rust 的 async 虽然已经达到日常使用的水准了,但是 async fn in trait 没有稳定之前有些东西用起来会很别扭,新手暂时将这个当作固定规则来用就好了。 |
69 Jirajine 2023-07-25 10:43:49 +08:00 @maotao456 当你真的去用 async tust 写实际应用/库的时候遇到困难就知道了,那不是你的问题,而是 rust 的问题。 async wg 列出了很多需要改进的问题 https://rust-lang.github.io/wg-async/ 这个博客 https://fasterthanli.me/ 有很多篇高质量文章帮助深入理解 async ,虽然文章质量非常高,但“需要深入理解才能实际使用”本身就说明问题了。 |
70 berry10086 2023-07-25 13:13:54 +08:00 @Rooger 同感,Rust 实践课讲的云里雾里,是大雷 |
71 isexdpac 2023-07-25 15:27:54 +08:00 是很难,生命周期,所有权,智能指针等等..... 后面还有更难的异步 async |
72 zdustrong 2023-09-29 06:49:23 +08:00 via Android Rust 的所有权分为三种使用方法. 1. 移动, 将所有的权交给其他方法, 不会归还. 对于基础类型(数字, 布尔值, &str, char),它是复制. 2. 只读借用. 一次可以借个多个方法. 3. 可读可写借用. 一次只能借给一个方法, 使用完自动归还. 掌握了这三种用法, 无论是普通方法, 还是 async 都很容易. 我的项目代码( https://github.com/zdu-strong/my-rust-project). |