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

要是用 Rust 就不会出问题了

  •  
  •   cmos · 2 天前 · 7858 次点击

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

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

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

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

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

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

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

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

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

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

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

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

    > 模式匹配

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

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

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