一周前学了一点 Rust 的皮毛, 手头没啥可以实践的项目, 想了想反正自己也没刷过 OJ, 就试试看最有名的 Leetcode.
没想到一刷就停不下来了, Leetcode 这玩意儿比游戏还毒, 反馈迅速, 快感强烈, 尤其是用 Rust 每次做完之后的运行时间都是 "0 ms","4 ms" 之类的. 看着 Beats 100%
快感油然而生...
不过也因为 Rust 本身的特性吃了踩了一些坑: 一开始做链表类题目的时候, 因为对 Onwership 理解不到位, 基本是处于被编译器吊打一晚上的状态. 期间还问了一个非常愚蠢的问题, 被狂喷之后又看了一遍 the book 里 ownership 相关的章节才算摸到了一点门道.
这一周总结下来就是 Leetcode 真好玩(一周没碰 Artifact 了哈哈哈), Rust 真香, 同好可以留言交流.
最后是项目仓库. 当然目前还只做了 30 题不到, 本来想至少做够 100 题再分享的, 不过项目里写了一点辅助代码来生成题目模板和帮助做本地单测, 寻思着指不定就能帮上谁, 也就厚颜无耻地放链接了:
1
Sparetire 2019-01-21 03:43:02 +08:00 via Android
同样也是打算用 Rust 刷题,初学 Rust,刚看完枚举,本以为像当初 C 学完指针和结构体就能写个链表出来,结果发现目前用 Rust 连个链表都写不出。。感觉自己菜破天际。。
|
2
Allianzcortex 2019-01-21 04:01:57 +08:00
我猜不是所有题目都支持 Rust 的(发现 Go 有不支持的,589/590 )
|
3
Vegetable 2019-01-21 08:10:31 +08:00 via iPhone 1
g 胖没想到自己输给了 leetcode
|
4
gimp 2019-01-21 08:51:13 +08:00
正好需要,star 了
|
5
trait 2019-01-21 09:01:05 +08:00 via iPhone 3
rust 不对 borrowchecker 有深刻的理解,链表树图刷题劝退属性点满,跟编译器斗争的时间远超算法本身
leetcode 给的这链表树结构声明太随意,坑比较多,楼主后期可能还会遇到不少,给个 tip,去看下标准库的 take(), swap()和 mem 里的几个方法,会帮你节省时间 |
6
trait 2019-01-21 09:02:18 +08:00 via iPhone 1
还有 refcell rc 这几个智能指针,以及 borrowchecker 两大原则
|
7
Moming 2019-01-21 09:24:09 +08:00
感觉刷题不如抄代码能感受新特性……我用 Python 刷到后面就写了几个 snippets 搞定了常用的数据结构,题目样式没有太大的变化。
Rust 有很多不错的项目,提提 PR 也挺好玩的。 |
8
rayingecho OP @Sparetire
一开始我也是这种感觉, 后来发现 Rust 写链表确实是个坎, 可以看看 [Learning Rust With Entirely Too Many Linked Lists]( https://cglab.ca/~abeinges/blah/too-many-lists/book/) |
9
rayingecho OP @gimp
感谢鼓励 |
10
rayingecho OP @trait
不能更赞同, 跟链表斗争能很好地检验对 borrow checker 的理解... |
11
rayingecho OP @Moming
感觉自己太菜了, 看到 rust 项目的 Help Wanted issue 都不太好意思下手 |
12
Moming 2019-01-21 12:56:26 +08:00
@rayingecho 同感,很多项目都只有给别人打 call 的份 😂
|
13
sherlockgy 2019-01-31 17:28:36 +08:00
谢了!
|
14
lynskylate 2019-01-31 20:47:48 +08:00 via Android
@trait 好建议,刚开始刷不会 mem:replace,写了一堆 unsafe
|
15
Simula411 2019-06-13 02:17:42 +08:00 via Android
9012 年 6 月了,楼主是那 200 强者之一吗?
|
16
unforgiven 2019-08-09 11:16:37 +08:00
@trait 正在被劝退的途中,148 题让我要爆炸了
|