Rust 学的我头痛,V 友里有谁用 Rust 写过什么大作吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
seakingii
V2EX    Rust

Rust 学的我头痛,V 友里有谁用 Rust 写过什么大作吗?

  •  
  •   seakingii 2022-03-15 23:45:09 +08:00 4693 次点击
    这是一个创建于 1307 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大作指 > HelloWorld 类的有实用价值的程序...

    18 条回复    2022-10-10 11:24:39 +08:00
    dndx
        1
    dndx  
       2022-03-16 00:04:13 +08:00   1
    不敢称大作,/t/802949 是一个多线程的 udp2raw ,用 Rust 写成。

    不过我这个 async Rust 的项目可能不是学习的好例子,建议先从同步 Rust 写起。async Rust 的执行流比较复杂,起来会显得不是太好 follow 。

    另外 https://doc.rust-lang.org/book/ 绝对是 Rust 学习的圣经,建议熟读,我现在写范型还会经常去看一看一些特殊的情况下应该怎么写比较好。
    dndx
        2
    dndx  
       2022-03-16 00:12:33 +08:00
    另外楼主不妨说一说具体是哪里学的头痛,这样才能针对性的提出建议...
    hei1000
        3
    hei1000  
       2022-03-16 00:24:19 +08:00
    我自己没写过,但是完整阅读过 zoxide 的代码,提交了一个简单的 pr
    btnokami
        4
    btnokami  
       2022-03-16 07:50:52 +08:00 via iPhone
    我司分布式计算框架是 rust 写的
    FightPig
        5
    FightPig  
       2022-03-16 08:50:53 +08:00
    rust 我是学了好几回了,最后也没用在生产上,全当兴趣用了,跟着官方文档走一遍再看看教程,然后写个应用,读别人项目源码的路子
    seakingii
        6
    seakingii  
    OP
       2022-03-16 09:03:31 +08:00
    @dndx 你写的 udp2raw 看起来很不错啊

    头痛的是,感觉 Rust 的语法不够自然,里面有很多奇怪的字符与众不同,字符串也别扭,每时第刻要区分是 &str 还是 String

    简单的说,其它语言可能花一周能上手开发,Rust 估计要一两个月...
    araaaa
        7
    araaaa  
       2022-03-16 09:20:14 +08:00 via iPhone
    写过一个网状 VPN
    cocoabeans
        8
    cocoabeans  
       2022-03-16 09:41:07 +08:00
    写了 Rust 就回不去了。
    Kasumi20
        9
    Kasumi20  
       2022-03-16 10:34:27 +08:00
    这应该大于 HelloWorld 吧,一个 DNS 代理工具: https://github.com/develon2015/dnsd
    libook
        10
    libook  
       2022-03-16 12:03:21 +08:00
    @seakingii #6 可以复习一下编译原理里是如何使用 stack 和 heap 的,这个是大多 VM 语言所涉及不到的,而且和 Rust 的核心特性Ownership 强相关的。
    dndx
        11
    dndx  
       2022-03-16 13:20:26 +08:00
    @seakingii &str, String 这些其实牵扯到一个字符串和字符串指针以及可变性的问题。实际上 Rust 这块的封装目的是在尽可能不要拷贝的情况下又要支持字符串的修改等操作。

    这块的话大多数的语言都会将其简化,比如 Lua, Java 的字符串其实创建了后是没有办法修改的,如果要修改就只能创建新的。而 Rust 的 String 支持修改就带来了传参可能要拷贝的问题。这种情况下有了 &str 就是给了用户一个不需要修改也不会拷贝的选择。

    Rust 这种设计更多的是偏向于底层语言的思维方式,如果是从高级语言比如 Java 过来那么的确是需要一些思维上的改变。
    gydi
        12
    gydi  
       2022-03-16 14:00:04 +08:00
    /t/838078 不是大作,但还是有一丢丢实用的程序。基于 tauri 框架,意味着整个项目不是纯纯的 Rust 。
    jedrek
        13
    jedrek  
       2022-03-16 18:04:00 +08:00
    HeliumTang
        14
    HeliumTang  
       2022-03-18 22:30:12 +08:00
    zero to prod. rust 后端项目
    Command-line rust ,把 linux 的各种命令用 rust 写一遍
    两本书都是最近发布的,在 z-library 都能找到
    macrorules
        15
    macrorules  
       2022-04-04 23:04:23 +08:00
    @seakingii 想多了,一年吧
    runtousa
        16
    runtousa  
       2022-10-09 18:18:07 +08:00 via iPhone
    @libook 这个有推荐的资料学习吗
    libook
        17
    libook  
       2022-10-10 11:13:42 +08:00   1
    @runtousa #16 可以试试国防科技大学的这个公开课,内存相关的话可以直奔第九章 [国防科技大学-编译原理(国家级精品课)高清流畅] https://www.bilibili.com/video/BV11t411V74n?p=40&share_source=copy_web&vd_source=15265a7d7d02e833e6fd88bc0bc421a1
    seakingii
        18
    seakingii  
    OP
       2022-10-10 11:24:39 +08:00
    @libook 谢谢分享
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1021 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:08 PVG 02:08 LAX 11:08 JFK 14:08
    Do have faith in what you're doing.
    ubao 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