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

要是用 Rust 就不会出问题了

  •  
  •   cmos · 20 天前 · 8884 次点击

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

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

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

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

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

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

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

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

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

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

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

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

    > 模式匹配

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

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

    高性能又咋样,内存安全又能咋样.... 线上出问题,还不是人来修 bug ,用团队里最多人熟悉的语言
    leokun
        78
    leokun  
       20 天前
    zzhirong
        79
    zzhirong  
       20 天前
    @5waker 我感觉预设特征数量其实也没问题的, 正常情况下是不会超过那个值的, 但是, 处理逻辑有问题, 超过了直接 panic 的做法就是不对的, 在处理外部输入(自己无办法掌控)的值的时候都应考虑预期之外的情况, 和编程语言无关, 属于业务逻辑范畴了.
    Newb1e
        80
    Newb1e  
       20 天前
    @leokun 手动起飞是吧
    DeWjjj
        81
    DeWjjj  
    PRO
       20 天前
    rust 不适合 crud ,但是非常适合基建,但是大部分人都在 crud ,还有一大部分在写 UI 。你做基建,自然得用,不做用啥?用 rust 做 crud ,不是给自己添堵?虽然我自己添堵过。
    okcdz
        82
    okcdz  
       20 天前
    经常改,业务经常变动的代码不适合用 Rust,Rust 这种语言一改数据结构就要大改,几乎重写,没有 workaround 的空间,不适合写业务。
    用来重写老的 C/C++ 库倒是合适,现在社区就在干这个事情。
    chtcrack
        83
    chtcrack  
       19 天前
    @DeWjjj 现在有 AI 了,可以玩玩 rust 了,没学过也没关系,我就用 AI 搞了两个 rust 玩具..开源了.
    viking602
        84
    viking602  
       19 天前
    @94 #9 cf 的问题语言不能背锅本质上是流程问题
    homewORK
        85
    homewORK  
       19 天前
    建议 aliae rust go
    程序最重要的权衡懂得取舍,对于你们来说性能不是问题的时候为什么会想起 rust 呢。不要提前优化,这是至理名言。
    快速迭代等需要的时候你自然就知道该用什么了。
    tudou1514
        86
    tudou1514  
       19 天前
    不管用啥,不考虑当前技术团队的平均水平么?如果 10 个研发都会 go ,那就 go 。如果 rust 只有两三个会,再优秀也不用。
    wKong753900
        87
    wKong753900  
       19 天前
    go
    lysShub
        88
    lysShub  
       19 天前
    @youyouzi 都想起来了 春熙路做手工😎
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:35 · PVG 06:35 · LAX 14:35 · JFK 17:35
    ♥ Do have faith in what you're doing.