原来的一个数据分析引擎,使用 C 开发的,C 开发效率太低了,debug 程序更是让人头大,打算使用 Rust 重构一下,学习了三四天,感觉 Rust 绝不是像 Python 那样看一上午就能开始项目然后边学边做的语言。 有没有用 Rust 重构过旧项目的朋友,来说说呗
![]() | 1 Geon97 90 天前 自信一点把感觉去掉 也不像 go 一样,看一天就可以边学边写 |
2 rqzrqh 90 天前 空闲时间重构过之前用 C 写的项目,大概 1500 行。学习了一个月,然后开始写,中间遇到复杂的数据所有权管理,也是思考+走了狗屎运才解决,大概写了一个月完成。golang 是可以看一上午就能上手,rust 不行,遇到复杂的数据所有权没高手帮忙很难解决。 |
![]() | 3 cmos 90 天前 你要是 C++的 10 年老手可以这么干,新手不建议用 rust 重构任何东西。你花在理解 rust 本身的时间比你写程序的时间要多得多,而且一段时间之后,你一定会忘记当时怎么设计的。你看一下我前几天写的本地版本快照程序,就知道我说的怎么回事了。 https://github.com/uselibrary/rustory/tree/master/src |
4 baba8 90 天前 建议用 go,rust 错误太奇葩,有次闪退解决一天没解决掉,最后 ai 给个了方案,延时 5 秒,真的解决掉闪退问题。 |
5 NessajCN 90 天前 ![]() 我自己除了 gui 和网页前端之外的所有项目基本都用 rust 重构了 不管之前用 cpp python 还是 go, 一旦 riir 之后就再也回不去了 重构过后再看自己项目原本的代码是那么丑陋和低效 所以就很能体会为啥 riir 如此的流行,因为确实会上瘾 |
6 bli22ard 90 天前 rust 的难度起码 go 的 5 倍以上 |
7 iOCZS 90 天前 rust 的难度在于内存管理吧? |
![]() | 8 bigtan 90 天前 能用 rust 重构的,基本上都重构完了 |
![]() | 9 bugyaluwang 90 天前 |
10 cccssss 90 天前 尝试过,很爽。有了再一次创造的快感 |
![]() | 11 lancelock 90 天前 要不用 zig |
![]() | 12 kapaseker 90 天前 ![]() 所有权是座山。这个你得理解很长的时间才能比较熟练,我大概有几个问题你可以看看能懂不? 1. Fn,FnMut,FnOnce 有什么区别? 2. 跨线程的为什么需要实现 Send ? 3. Box ,Mutex ,Arc ,RefCell ,Rc 有什么区别? 在这三个问题的基础上,再问自己,为什么 Rust 中会有这些玩意儿,为什么会这么设计呢? |
![]() | 13 noe132 90 天前 rust 边学边写改了一个之前 C++ 写的切换输入法小工具 也就 200 行不到代码,时间全用来查各种 api 文档了,好在最后 macos 的 rust api 库完善,硬是改下来了,全程 expect 一把梭,要不要 deref 边猜边写 |
![]() | 14 tinybaby365 90 天前 用 go 重构吧。才学习了三四天,对 Rust 来说远不够。 |
![]() | 15 memcache 90 天前 这不叫重构吧~ 算重写了。 学了一段时间后,写过一个小项目: https://github.com/chenqimiao/quarkdrive-webdav rust 入门需要一些耐心的,不是两三天就可以上手的,当然大佬除外 |
![]() | 16 xkeyC 90 天前 可以先 export 出个 C header ,然后 rust-bindgen ,新需求和需要修改的需求,可以在 rust 端完成,实现逐渐迁移( |
17 Rickkkkkkk 90 天前 C 开发效率太低,以我不多的经验,rust 是效率更低的。 go 和 java 都还行(至少这两的语法合乎人类的自然语言的语法习惯) |
![]() | 18 skiy 90 天前 Rust 会让你知道什么叫开发效率低。所有权头很大。 |
19 MacsedProtoss 90 天前 via iPhone ![]() 压根没有必要 rust 开发效率其实更低,除了邪教爱好者基本上没啥人会 rust 重写东西 |
20 Rickkkkkkk 90 天前 试想这样的 case ,起两个线程/协程,并发分别从两个下游接口获取数据,执行完成之后,合并这两个接口的数据并返回。 如此简单的逻辑你用 rust 写会头大的很 |
21 istomyang 90 天前 via Android rust 其实培养的是一种优秀的编程习惯,最好先写 rust ,再写 c ,你先自由,后约束,当然处处碰壁。一旦掌握了所有权的精髓,你写其他语言,自然而然使用所有权的思维方式,写出的代码更健壮。 |
![]() | 22 epiloguess 90 天前 我们用 rust+pyo3 重构了原来 python+go 的项目,主要是视频流的处理,没怎么用异步 io ,确实比原来的那一套要稳定得多。边学边写应该是不可能的,我们基本上都是提前半年通知,每个人至少看完了 trpl ,以及常用的库,还要一边写一边查 |
23 gullitintanni 90 天前 ![]() @istomyang #21 不认同。如果你经常用 C 做生产级别的项目的话,你会发现,合格的开发者在用 C 编程的时候,所有权是时刻牢记于心的,并非无拘无束地自由发挥。 Rust 这个奇葩玩意对所有权做了蹩脚的抽象,把它显式地提到了语法层面,虽然避免了开发者因为不称职或者粗心大意所带来的内存安全问题,但同时也降低了代码的可读性和可维护性。 或许在 security-critical 的领域(比如航空航天、军事等领域)这种妥协是必要的,但它在常规场景并不一定合适。 就好比你在自家客厅走路,戴头盔、穿全身护具,提升安全性的价值远远无法弥补其带来的不便。 |
![]() | 24 yuandong 90 天前 开发效率低效,已放弃 |
25 w568w 90 天前 尝试过,很爽。但这里是 V 站,所以我要说 Rust 是一坨屎,意义不明的垃圾发明,你只要碰了这语言就是魔怔人、教徒,并且对上面所有认为 Rust 好进行出警 |
![]() | 27 lasuar 90 天前 我曾花了 2 个月时间学 rs ,现在过去 2 年,也没能在项目中用上。我不想评价 rs 的上手难度,因为总有人说是我水平不够,但我相信会有一个比肩 rs 性能但上手难度接近 go 的语言出现。 |
![]() | 28 sxhxliang 90 天前 我写 rust 四年了,只要你学会了,效率并不低,这是我的例子 t/1144449#reply17 , 顺便说一下 tmux 也用 rust 重写了,https://github.com/richardscollin/tmux-rs |
29 codefun666 90 天前 Rust 的丑陋难以接受,如果需要内存安全,可以用 Go ,性能差一点但问题不大。 重写的意义在哪里? 能创造什么“价值”? |
30 CatCode 89 天前 没有 也不打算 是 Rust 用户 |
![]() | 31 iF0oo2txTX91o9Sg 89 天前 说实话喊了这么久的 rust 并没有觉得好在哪里,我身边没见过会 rust 的。 |
32 midstream 89 天前 via Android 如果空闲时间多,可以搞,完成了之后很有成就感和满足感。 如果纯为了解决问题,可以但没必要 |
![]() | 33 DeWjjj 89 天前 写过几个以前 java 写的日志微服务,速度快了一点,重构之后很稳定。 但是,收益不大,性能上收益很小。 |
34 roundgis 89 天前 via Android @gullitintanni 航空航天不是还有 ada 么 |
![]() | 35 zagfai 89 天前 都差不多 我什么都写 py c rust c# swift kotlin java 。。。。用着写得最快的还是 py 。。。 |
36 cnbatch 89 天前 @sxhxliang 准确来说,是有个爱好者尝试使用 Rust 重写 tmux ReadMe 内的两句话即可看出来: “This project is alpha quality and has many known bugs” “This a fun hobby project for me.” 原版 tmux 依然与 Rust 无关: https://github.com/tmux/tmux |
![]() | 37 buf1024 89 天前 有,python 重构为 rust ,总规模如下: find . -name '*.rs' -print | grep -Ev 'target|frontend' | xargs wc -l 24280 total 不要被上面负面情绪所影响,这些可能没几个真正写过 rust 代码,rust 就是上手难而已。但是等你熟悉它的编码思维,写过几个上规模的代码,编码效率也很快。 不过 rust 编译很慢,需要你准备性能高点的电脑。 |
![]() | 38 wupher 89 天前 数据分析感觉用 python 可能更合适? 有 python 工具项目转 Rust ,图片处理类。确实不那么容易,当然效果也很显著。 AI 时代了,其实当前应该比你想像的要简单多了。 |
![]() | 39 bluearc 89 天前 rust 开发效率高更多体现在多模块大项目上吧,相比其他语言写出来更可控也好审阅;而且 rust 入门也是很需要时间的。既然原项目是 C ,那我觉得用 cpp 重构更合适 |
40 yannxia 89 天前 业务性质上的代码反而不难,我用 rust 在重构一个 API Proxy ,难度就变大了,很多抽象不太好写,因为所有权 + 泛型 变成了两座大山 |
![]() | 41 IamUNICODE 89 天前 我,把原来老东家用 node 写的引擎重写了,性能提高不少 我是用两周把语法熟悉了一遍,然后配合 cursor 和 chatgpt 重构的,每写一点就问 cursor 原理,尽量弄懂所有代码,;另外代码结构还是我自己来的,所以还是可控的,现在在折腾硬件 linux 了 感觉最难受的就是生命周期,让 gpt 给我出了好几道题,做完又忘了,其余的还是很爽的。 |
![]() | 42 xdeng 89 天前 尝试了入门三次 都没入进去 |
43 nebkad 89 天前 省流: 能问出这个问题的,一概回答不建议用 Rust 重构。 因为适合用 Rust 重构的人和项目不会问这个问题。 不省流: 用 rust 实现的数据引擎已经在哗哗地赚钱了 |
![]() | 44 Kumo31 88 天前 Rust 还是主要替代 C/C++的场景,我们的存储引擎是用 Rust 开发的,比 C++省心多了 |
![]() | 46 Nugine0 86 天前 有人已经在用 Rust 赚钱了,有人还在打语言口水仗。 很多人学不会 Rust 完全是没有放下包袱,还在用其他语言的思维硬扭,那当然效率提不上去。 反而一些学生上手 Rust 就飞快,就算现在有 AI 辅助,也能看出人和人之间的学习能力确实有区别。 话说回来,重写旧项目总是有目标的,你的目标可以是提升性能、降低维护成本、练习新技术栈、吸引开源贡献等等,但不能是跟风。评估一下你是否能在合理的耗时内达成项目目标,就知道该不该重写了。 |
49 Observer42 73 天前 @Rickkkkkkk 没懂,协程/线程都能返回数据的,join 拿到以后合并不就行了,都用不到 channel / Arc&Mutex 之类的概念 |