要是用 Rust 就不会出问题了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
cmos
V2EX    程序员

要是用 Rust 就不会出问题了

  •  
  •   cmos 3 天前 8156 次点击

    最近在开发一个新项目,技术选型阶段又一次陷入了 Rust 还是 Go 的问题。

    实际用 Go 写起来非常顺手,并发模型简单明了,开发效率高,几乎没遇到什么语言层面的坑。从结果上看,项目运行稳定,性能也完全达标。

    但不知道为什么,总是觉得如果换成 Rust ,内存安全、零成本抽象、模式匹配,可以让代码更稳健,用 Rust 就不会出问题。实际上,Rust 的开发节奏会拖慢进度,而且 Go 的工程表现已经足够好。

    88 条回复    2025-12-12 20:33:39 +08:00
    chunqicoder
        1
    chunqicoder  
       3 天前
    肯定是进度最重要啦,什么“内存安全、零成本抽象、模式匹配,可以让代码更稳健”对于进度来说都太虚幻了,对于普通业务来说进度才是唯一重要的,快速产出才是最重要的,我想起一个梗“当你不确定要不要买 mac 的时候说明你不需要 mac” 或者 当你不确定是不是必须要用 rust 的时候说明不需要 rust
    Niphor
        2
    Niphor  
       3 天前
    要是没 bug ,怎么完成 kpi
    xdeng
        3
    xdeng  
       3 天前   3
    还是太闲了
    yplam
        4
    yplam  
       3 天前
    除非是计算密集型、内存受限、大量 FFI 调用,不然还是 Go 实际点(大规模部署的除外)
    youyouzi
        5
    youyouzi  
       3 天前   10
    @chunqicoder 哥,想去做手工了
    BingoXuan
        6
    BingoXuan  
       3 天前
    go 能应对大部分抽象,并不需要 rust 。rust 是零成本抽象和大量抽象。比起 rust ,我更喜欢 zig 。但 zig 总是时不时来一个破坏性更新,真的很恼人。
    chchwy
        7
    chchwy  
       3 天前
    GO 的,Rust 要解什?
    cmos
        8
    cmos  
    OP
       3 天前
    @chunqicoder 1#
    > 当你不确定是不是必须要用 rust 的时候说明不需要 rust
    这句话太好了,算是 rust 开发的准绳
    94
        9
    94  
       3 天前   2
    > 但不知道为什么,总是觉得如果换成 Rust ,内存安全、零成本抽象、模式匹配,可以让代码更稳健,用 Rust 就不会出问题。

    Cloudflare 11/18 的大面积故障,不就是 Rust 写的业务代码有逻辑问题吗……
    WithoutSugarMiao
        10
    WithoutSugarMiao  
       3 天前
    古法编程吗?能用 rust 就用吧,感觉之后 rust 可能会代替 go 的生态位。
    fengyj
        11
    fengyj  
       3 天前   4
    锈批的幻觉:
    - rust 会取代 xxx
    - 上 rust 就没这问题了,然而很多时候问题不是全在语言本身,业务理解的 bug 才是根源
    craftsmanship
        12
    craftsmanship  
       3 天前 via Android
    @youyouzi 这都能给认出来
    craftsmanship
        13
    craftsmanship  
       3 天前 via Android   1
    @BingoXuan 还没推 1.0 。。别急
    cmos
        14
    cmos  
    OP
       3 天前
    @fengyj 11#
    是的,我就是因为有这个幻觉,才总是下意识的想用 rust
    hingle
        15
    hingle  
       3 天前
    经验丰富、或 rust 用熟练了,用哪个语言都可以,因为知道哪些地方比较容易出现内存安全问题。
    werls
        16
    werls  
       3 天前
    要是不做开发,根本不会有纠结 go 还是 rust 的烦恼!
    ninjaJ
        17
    ninjaJ  
       3 天前
    如果让我再选一次,我可能会简单的项目用 Rust ,复杂的项目不用它。
    作为一个老 Java ,可以说 Java 早已病毒入脑。之前在一个比较复杂的新项目中贸然使用 Rust ,为了兼顾灵活性、效率和内存安全,过早地使用了大量泛型和智能指针这些东西,认知负担特别重,踩了特别多的坑。
    要是再让我选一次,什么能让我一把梭,我就选什么。只有在遇到切实的语言相关的性能瓶颈、安全漏洞需要**重构**时,再用 Rust 锦上添花。
    慢工出细活才是入手 Rust 的正确使用方式。
    MindMindMax
        18
    MindMindMax  
       3 天前
    Rust 的认知负担太重了,还是喜欢简洁的 Go 。
    相比给自己(合作开发者)创造那么大的精神压力,我宁愿牺牲一丢丢性能。
    珍爱生命,我用 Python ( Golang )
    Smileh
        19
    Smileh  
       3 天前
    建议别搞程序员工作
    zxjxzj9
        20
    zxjxzj9  
       3 天前
    谁说的用 rust 就不会出问题,Cloudflare 一行 rust 代码把全世界互联网干碎一晚上不记得了?
    DingJZ
        21
    DingJZ  
       3 天前
    遇到问题再说,php 也跑的好好的
    之前遇到一个性能问题,让 ai 把一部分核心实现用 rust 重构后性能指数级提升
    MapHacker
        22
    MapHacker  
       3 天前
    "实际用 Go 写起来非常顺手,并发模型简单明了,开发效率高,几乎没遇到什么语言层面的坑。从结果上看,项目运行稳定,性能也完全达标。"

    这已经是几乎完美的评价了,还换什么换
    Gilfoyle26
        23
    Gilfoyle26  
       3 天前
    汇编性能最好,咋不用汇编写呢
    simple2025
        24
    simple2025  
       3 天前
    cf 不也是用的 nginx 吗?
    charles0
        25
    charles0  
       3 天前
    @simple2025 CF 用 Rust 自己实现了 Pingora 替代 nginx
    ano
        26
    ano  
       3 天前
    现在的要求是能跑就行
    justtokankan
        27
    justtokankan  
       3 天前
    业务大于技术
    netizen
        28
    netizen  
       3 天前 via iPhone   2
    @zxjxzj9 那也是开发者的问题,unwrap 直接上生产,怪不得语言
    VPNHunter
        29
    VPNHunter  
       3 天前
    说了多少遍,不是高精尖项目,不要用 Rust ,不要用 Rust ,不要用 Rust !
    cmos
        30
    cmos  
    OP
       3 天前
    @ano 26#
    人能跑也是跑!
    hugozach
        31
    hugozach  
       3 天前
    那不如上 zig
    chambered
        32
    chambered  
       3 天前
    Rust 的项目前期一定要有扎实的设计,否则后面加个小功能或者快速迭代你需要从头撸到底修改
    adoal
        33
    adoal  
       3 天前
    Rust 最有价值的项目是重写 sudo
    MacsedProtoss
        34
    MacsedProtoss  
       3 天前 via iPhone   1
    还是太闲了,rust 这玩意曲线又抖后期又埋坑的,不是邪教徒谁日常用这玩意
    franklinyu
        35
    franklinyu  
       3 天前 via iPhone
    作 Rust 好者你用 Go ,大部分目迭代才是硬道理
    canteon
        36
    canteon  
       3 天前
    钩子有屎加加
    aroad
        37
    aroad  
       3 天前
    @craftsmanship #12 添加个用户标签就好了
    66beta
        38
    66beta  
       3 天前
    @chchwy #7 解决那些顶尖程序员太闲了的问题
    kandaakihito
        39
    kandaakihito  
       3 天前
    我看 Rust 语言搞得不错,性能极大优化,cargo 工具链与借用检查也更便捷。如果能真的开工项目,Rust 就是我们理想中的生产级语言。(
    yiqiao
        40
    yiqiao  
       3 天前
    @zxjxzj9 #20 怎么还有人说是 Rust 的问题啊,核心原因又不是 Rust.
    就如 #28 楼说的,是自己菜。对 clickhouse 不熟悉写的两眼一黑的代码
    XIVN1987
        41
    XIVN1987  
       3 天前
    内存安全??带 GC 的语言也有内存安全这个问题吗??
    rust 的内存安全不是相对于 C 、C++说的吗??
    chtcrack
        42
    chtcrack  
       3 天前
    @netizen 没学过 rust,原来 unwrap 不安全啊,感谢,立马叫 AI 修改一下!
    LightLolo
        43
    LightLolo  
       3 天前
    业务工程类我先 GO 中间件 基建 底层支撑用 rust 用 rust 写业务也太痛苦了
    dacapoday
        44
    dacapoday  
       3 天前   1
    "实际用 Go 写起来非常顺手,并发模型简单明了,开发效率高,几乎没遇到什么语言层面的坑。从结果上看,项目运行稳定,性能也完全达标。"
    都已经这样了,还有什么缺点?是因为 Go 的名字不叫 Rust ,所以嫌弃它吗?
    cryptovae
        45
    cryptovae      3 天前
    @XIVN1987 带 GC 最大的问题就是向操作系统申请的内存不会立即释放,碎片内存利用率不高,并发下内存暴增非常明显,这里点名 Python
    5waker
        46
    5waker  
       3 天前
    @94 CF 的那次问题本质是变更不合理,没有任何灰度,预设特征数量过于死板。错误不处理顶多背锅 10%,这里面还有程序员的锅呢
    5waker
        47
    5waker  
       3 天前
    原始 Go 服务性能完全够用,业务也在稳定运行,重构是完全没道理的。真有性能问题了,我都建议扩容,重构耗时耗人
    supuwoerc
        48
    supuwoerc  
       3 天前
    cf 用 rust 不还是崩了吗,代码质量是看人的,不是看语言的,比如我,不关啥语言,我都能造屎山出来
    IDAEngine
        49
    IDAEngine  
       3 天前
    Rust 和 Go 从来都不是问题,像微软的 asp 都可以稳定运行几十年不重启
    dapang1221
        50
    dapang1221  
       3 天前
    原神语言是这样的
    dosmlp
        51
    dosmlp  
       3 天前
    四字真言:能跑就行
    别想其他乱七八糟的
    ethusdt
        52
    ethusdt  
       3 天前
    RIIR
    visper
        53
    visper  
       3 天前
    感觉 ai 写起 go 来更强一点。语法简单随便写,编译测试迭代快。rust 经常 ai 自己搞不过编译器然后就 clone.
    sankooc
        54
    sankooc  
       3 天前
    没有性能上的需求 没必要用 rust
    Geon97
        55
    Geon97  
       3 天前
    主要是现在挺稳定没有遇到什么问题啊。如果遇到了就再说,大不了重新 rust 写某个业务做组件
    flytsuki
        56
    flytsuki  
       3 天前
    .unwrap()警告
    Ketteiron
        57
    Ketteiron  
       3 天前
    @XIVN1987 带 GC 的语言,屎山堆起来肯定会遇到内存泄漏,而且排查困难,有可能是狗屎业务代码引发的,有可能是底层框架/库引发的,还有可能是编译器/解释器自己的问题(点名 nodejs)。
    cmos
        58
    cmos  
    OP
       3 天前
    @5waker 47#
    确实是这样的,遇到不够用的,都是先扩容,能凑合就凑合。
    zhouyin
        59
    zhouyin  
       3 天前
    @DingJZ
    用 rust 重构 php 代码? 具体什么代码 为什么不用 go
    XIVN1987
        60
    XIVN1987  
       3 天前
    @Ketteiron
    rust 没有内存泄露吗??
    nrtEBH
        61
    nrtEBH  
       3 天前
    又不是不能用.jpg
    atskyline
        62
    atskyline  
       3 天前
    关键可能是能不能接受 GC ,不能接受 GC 的项目中基本上只能在 rust/C++/C 中选择了
    coefu
        63
    coefu  
       3 天前
    @chunqicoder 妞儿找的怎么样了?
    chunqicoder
        64
    chunqicoder  
       3 天前
    @coefu #63 最近健身没找了
    xFrye
        65
    xFrye  
       3 天前
    如果一个项目是在纠结 go 还是 rust ,那你心中的答案应该是 go ,除非你是在纠结 rust c c++
    94
        66
    94  
       3 天前
    @5waker #46 ,只是对于 OP "觉得如果换成 Rust ,内存安全、零成本抽象、模式匹配,可以让代码更稳健,用 Rust 就不会出问题" 的回答。
    程序稳健不稳健不是看语言的,大部分隐患都是在人上面。换语言去重构该拉的时候还是会拉,只说减少了拉的概率。其实就是 #11 的态度。
    Ketteiron
        67
    Ketteiron  
       3 天前
    @XIVN1987 写得差该漏还是漏,但相对来说几率小很多。js/py 很容易无意识写出导致内存泄漏的代码,其次是大量使用的依赖库本身也有很多内存泄漏。
    bsun
        68
    bsun  
       3 天前
    2025 年度维护者峰会上,已经决定移除 Rust 的 "experimental" 标签。Rust 现在已经成为内核的核心组成部分。

    https://lwn.net/Articles/1049831/
    everhythm
        69
    everhythm  
       3 天前
    哎大部分业务项目,绕不开工程为主,出问题再修的模式,最终质量跟开发效率妥协

    当然可以认为 rust 是理想型工具,但是不够现实,业务开发总是效率大于完美的
    weiwenhao
        70
    weiwenhao  
       3 天前
    rust 该 unwarp 也是会崩溃,golang 加上 if xxx != nil 判断也是安全。
    colourfulsai
        71
    colourfulsai  
       3 天前
    当你不知道用 Rust 还是 Go 的时候,或许你需要的是 Csharp……
    snylonue
        72
    snylonue  
       3 天前
    go 也没啥内存安全问题吧
    flyingghost
        73
    flyingghost  
       3 天前
    实际用 Go 写起来非常顺手,并发模型简单明了,开发效率高,几乎没遇到什么语言层面的坑。从结果上看,项目运行稳定,性能也完全达标。

    都这样了你还在想啥。。。非要我把 Go 改名 Gost 才满意吗。。。
    w568w
        74
    w568w  
       3 天前
    > 内存安全

    Rust 的「内存安全」一直是相对 C/C++ 这种偏底层语言说的。

    Go 、Java 、Python 、… 根本不存在内存问题,当然也是内存安全的。Rust 相比 Go 在这方面没有任何优势。

    当然如果是说「空安全」,那又是另一件事了。

    > 模式匹配

    这个在 Go 2 讨论特别久了,用模式匹配势必会带入一堆新问题,所以看你的具体需求。

    即使是 TypeScript 编译器这种重数据结构的活,微软也已经证明了能用 Go 写的。
    Gilfoyle26
        75
    Gilfoyle26  
       3 天前
    @chunqicoder #1 咋不回复呢
    IamUNICODE
        76
    IamUNICODE  
       3 天前
    正在用 axum+seaorm+utoipa 做一个项目,已经交付第一版。
    感觉其实还行,2017 年入门一次,今年花 3 个月练习语法,感觉架子打好后,增删改查业务和 ts 没什么区别,准备用这次经验总结一个通用项目模板自用。
    edisonwong
        77
    edisonwong  
       3 天前
    写的快+后人易维护才是硬道理

    高性能又咋样,内存安全又能咋样.... 线上出问题,还不是人来修 bug ,用团队里最多人熟悉的语言
    leokun
        78
    leokun  
       3 天前
    zzhirong
        79
    zzhirong  
       3 天前
    @5waker 我感觉预设特征数量其实也没问题的, 正常情况下是不会超过那个值的, 但是, 处理逻辑有问题, 超过了直接 panic 的做法就是不对的, 在处理外部输入(自己无办法掌控)的值的时候都应考虑预期之外的情况, 和编程语言无关, 属于业务逻辑范畴了.
    Newb1e
        80
    Newb1e  
       3 天前
    @leokun 手动起飞是吧
    DeWjjj
        81
    DeWjjj  
    PRO
       3 天前
    rust 不适合 crud ,但是非常适合基建,但是大部分人都在 crud ,还有一大部分在写 UI 。你做基建,自然得用,不做用啥?用 rust 做 crud ,不是给自己添堵?虽然我自己添堵过。
    okcdz
        82
    okcdz  
       3 天前
    经常改,业务经常变动的代码不适合用 Rust,Rust 这种语言一改数据结构就要大改,几乎重写,没有 workaround 的空间,不适合写业务。
    用来重写老的 C/C++ 库倒是合适,现在社区就在干这个事情。
    chtcrack
        83
    chtcrack  
       2 天前
    @DeWjjj 现在有 AI 了,可以玩玩 rust 了,没学过也没关系,我就用 AI 搞了两个 rust 玩具..开源了.
    viking602
        84
    viking602  
       2 天前
    @94 #9 cf 的问题语言不能背锅本质上是流程问题
    homewORK
        85
    homewORK  
       2 天前
    建议 aliae rust go
    程序最重要的权衡懂得取舍,对于你们来说性能不是问题的时候为什么会想起 rust 呢。不要提前优化,这是至理名言。
    快速迭代等需要的时候你自然就知道该用什么了。
    tudou1514
        86
    tudou1514  
       2 天前
    不管用啥,不考虑当前技术团队的平均水平么?如果 10 个研发都会 go ,那就 go 。如果 rust 只有两三个会,再优秀也不用。
    wKong753900
        87
    wKong753900  
       2 天前
    go
    lysShub
        88
    lysShub  
       2 天前
    @youyouzi 都想起来了 春熙路做手工
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     803 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC19:55 PVG 03:55 LAX 11:55 JFK 14:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86