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