V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
silentsky
V2EX  ›  Rust

学 Rust 很难吗?为什么我看了半小时教程感觉已经会了,想了解下哪方面是难点

  •  
  •   silentsky · 2023-10-22 14:42:10 +08:00 · 5827 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。
    37 条回复    2024-04-19 21:57:10 +08:00
    IvanLi127
        1
    IvanLi127  
       2023-10-22 14:43:47 +08:00 via Android
    我上手写之前也是这么想的🤔
    Leviathann
        2
    Leviathann  
       2023-10-22 14:46:33 +08:00   ❤️ 2
    那你无敌了呀
    Noicdi
        3
    Noicdi  
       2023-10-22 14:49:19 +08:00 via iPhone
    真上手写的时候我就傻了
    silentsky
        4
    silentsky  
    OP
       2023-10-22 14:51:52 +08:00
    可能是错觉😂
    iOCZ
        5
    iOCZ  
       2023-10-22 14:57:02 +08:00   ❤️ 1
    智能指针也会了?还有宏
    hsfzxjy
        6
    hsfzxjy  
       2023-10-22 15:05:21 +08:00 via Android
    来写个链表
    ShadowPower
        7
    ShadowPower  
       2023-10-22 15:09:02 +08:00   ❤️ 1
    难点:
    生命周期、所有权、借用检查器、异步
    silentsky
        8
    silentsky  
    OP
       2023-10-22 15:13:53 +08:00
    @iOCZ 指针以前学 C 的时候有学过 这个我还没细看
    sukinee
        9
    sukinee  
       2023-10-22 15:16:21 +08:00
    写的时候就知道了
    musi
        10
    musi  
       2023-10-22 15:21:44 +08:00 via iPhone
    我不看教程问 gpt 我也感觉会了
    silentsky
        11
    silentsky  
    OP
       2023-10-22 15:25:07 +08:00
    @ShadowPower 所有权不难啊 刚看了几分钟学会了
    silentsky
        12
    silentsky  
    OP
       2023-10-22 15:29:30 +08:00
    学了这个能涨工资就好了😂
    learningman
        13
    learningman  
       2023-10-22 15:29:38 +08:00
    “指针以前学 C 的时候有学过”
    给我一种无知者无畏的感觉
    iOCZ
        14
    iOCZ  
       2023-10-22 15:54:20 +08:00
    就是眼睛觉得会了,脑子也认可了。动起手来还是会这里想想,那里想想。学习的时候,多半是认可它,所以很顺畅,写起来的时候,这里怀疑,那里怀疑,就会有一些磕碰。
    xbird
        15
    xbird  
       2023-10-22 17:12:43 +08:00   ❤️ 1
    生命周期,叠加 trait 设计,叠加所有权,能让你把头发抓烂,你要是半小时会了,在下拜服
    czzhengkw
        16
    czzhengkw  
       2023-10-22 17:30:35 +08:00
    一看就会,一做就废是大部分人的学习常态
    duluosheng
        17
    duluosheng  
       2023-10-22 20:05:55 +08:00
    你牛~,瑞思拜
    nash
        18
    nash  
       2023-10-22 20:27:09 +08:00   ❤️ 2
    你看 3 分钟短视频,也会觉得造芯片也就那么回事
    cxsz
        19
    cxsz  
       2023-10-22 21:14:49 +08:00
    学了好几次了,不知道干啥,后来就又忘了
    8675bc86
        20
    8675bc86  
       2023-10-22 21:16:12 +08:00
    lz 啥学校毕业的,如果是清北,那正常,其他的话,……
    solobat
        21
    solobat  
       2023-10-22 21:32:56 +08:00
    看看确实简单清晰,写着写着就越来越费劲
    lB2cGz9OQ1agw7XK
        22
    lB2cGz9OQ1agw7XK  
       2023-10-22 22:23:05 +08:00
    嗯,hello world
    我也学会了
    DeWjjj
        23
    DeWjjj  
       2023-10-22 22:41:06 +08:00   ❤️ 1
    指针是指针,box 类是 box 类,套起来了就很繁琐。
    外加,宏代码复用编辑也是一个很头疼的事情。
    Laussan
        24
    Laussan  
       2023-10-23 05:58:23 +08:00
    看看你的双链表
    coolmenu
        25
    coolmenu  
       2023-10-23 08:37:20 +08:00
    人生三大错觉,现在又多了一个?
    makelove
        26
    makelove  
       2023-10-23 08:45:12 +08:00
    https://coolshell.cn/articles/20845.html
    这里也有个教程,看看是不是还很简单
    tairan2006
        27
    tairan2006  
       2023-10-23 08:50:07 +08:00
    写个双链表我看看
    huiwang520
        28
    huiwang520  
       2023-10-23 09:48:18 +08:00
    学完之后加上一个项目实战,就基本差不多了,这里推荐一个手写 KV 数据库的实战项目
    https://w02agegxg3.feishu.cn/docx/Ktp3dBGl9oHdbOxbjUWcGdSnn3g
    encro
        29
    encro  
       2023-10-23 09:52:44 +08:00
    如果 c,c++很溜,学 rust 没啥难度。
    Huelse
        30
    Huelse  
       2023-10-23 09:56:42 +08:00
    难点还是借用和所有权吧,理解起来简单,想实现一个抽象的东西的时候就头疼了,要非常清晰内存的情况,否则连编译都过不了
    qpwoeiruty
        31
    qpwoeiruty  
       2023-10-23 10:17:22 +08:00
    会了和会是两个概念
    ShadowPower
        32
    ShadowPower  
       2023-10-23 12:36:25 +08:00
    @silentsky 看了几分钟学会的,和真正掌握的情况其实不太一样。只看概念本身的话,其实都不难。
    看概念的讲解就好比在看教材,而且还是写得不错的那种教材。
    看别人的代码就好比看习题答案,别人直接给出了思考的结果,所以感受不到思考的过程。

    但是自己亲自去写这玩意的时候,就跟做题一样……
    思路卡在一个地方,好久都解不出来……
    PTLin
        33
    PTLin  
       362 天前
    就比如最简单的几个 case
    fn main() {
    let mut a = [1, 2, 3];
    let b = &a[0];
    a[0] = 1;
    //b;
    }
    为什么把注释//b;去掉了就编译不过。


    fn foo<'a, 'b: 'a>(s1: &'a str, s2: &'b str) -> &'a str {
    if s1.len() > s2.len() {s1} else {s2}
    }

    fn main() {
    let s1="s1".to_string();
    let s2="s2".to_string();
    let ret=foo(&s1, &s2);
    ret;
    }
    这里'b:'a ,并且 s1 生命周期比 s2 长,为什么能运行。
    tietou
        34
    tietou  
       355 天前
    那你厉害呀
    sxfscool
        35
    sxfscool  
       329 天前
    pub fn get<H, T, S, B>(handler: H) -> MethodRouter<S, B, Infallible>
    where
    H: Handler<T, S, B>,
    B: HttpBody + Send + 'static,
    T: 'static,
    S: Clone + Send + Sync + 'static,

    这个能看懂吗
    wule61
        36
    wule61  
       321 天前 via Android
    写的时候满屏幕都是报错😂
    uiiytwyfsdtr
        37
    uiiytwyfsdtr  
       186 天前
    就像一个写了五年 C++的人在简历上写精通 C++一样...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3222 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.