个人笔记分享: Rust 语言、标准库解析、常用三方库解析,以及 Rust 嵌入式开发(ESP32) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
geekard
V2EX    Rust

个人笔记分享: Rust 语言、标准库解析、常用三方库解析,以及 Rust 嵌入式开发(ESP32)

  •  
  •   geekard 2024-08-28 21:24:03 +08:00 3046 次点击
    这是一个创建于 478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    分享下我的 Rust 系列博客: https://blog.opsnull.com/rust

    1. Rust-个人参考手册:各种 Rust 文档、书籍的学习笔记。
    2. Rust 标准库解析:涵盖了 Rust 标准库的绝大部分,如 mem 、ptr 、collector 、io 等;
    3. 常用三方库解析:涵盖了 Rust 项目常用的三方库,如 serde 、thiserror 、anyhow 、tracing 、clap 、axum 、reqwest 等 18 个常用库解析;

    另外 blog 还包含 Rust 嵌入式( ESP32S3 处理器)系列文章: https://blog.opsnull.com/rust-embedded/

    1. 介绍了 esp-idf 和 esp-rs 工具链的安装和调试;
    2. 介绍使用 Rust 开发嵌入式 std 、no_std 应用的过程;
    3. 介绍了 Rust 驱动 LCD 、Touch 、Camera 、Audio 的内容(还在整理中)。

    Enjoy !

    9 条回复    2024-08-29 11:40:26 +08:00
    zeusho871
        1
    zeusho871  
       2024-08-28 21:29:45 +08:00
    esp32 的 rust 是官方提供的嘛?久了没看既然出这个了 api 都支持还是 想整个 web 配网的
    geekard
        2
    geekard  
    OP
       2024-08-28 21:39:20 +08:00   1
    @zeusho871 ESP32 处理器架构分两种类型:RISC-V 和 Xtensa ,其中 RISC-V target 是 Rust 官方工具链 Tier2 支持级别,也即 Rust 官方直接支持的。Xtensa 的 Rust 编译工具链是 Tier3 级别,目前是 Espressif 自己 fork 的一个项目 esp-rs/rust: https://github.com/esp-rs/rust

    其它 ESP32 官方 Rust 开发库,都在 https://github.com/esp-rs 开源。

    web 配网可以参考官方的这个 Rust example: https://github.com/esp-rs/esp-idf-svc/blob/master/examples/wifi.rs
    zeusho871
        3
    zeusho871  
       2024-08-28 21:43:35 +08:00
    @geekard 感谢 我去瞅瞅看 感觉用 rust 写不错 之前用纯 c 干 太折腾了
    EvanLuo42
        4
    EvanLuo42  
       2024-08-28 21:44:59 +08:00 via iPhone
    可以看看 embassy
    geekard
        5
    geekard  
    OP
       2024-08-28 21:54:01 +08:00
    @EvanLuo42 嗯,ESP32 的 https://github.com/esp-rs/esp-hal/tree/main/esp-hal-embassy 为 esp-hal 提供了 embassy async Executor 实现,两者可以很好的协作。

    esp-hal 项目的 example 下有大量 embassy 例子,比如: https://github.com/esp-rs/esp-hal/blob/main/examples/src/bin/embassy_hello_world.rs
    ElGordo
        6
    ElGordo  
       2024-08-28 21:58:55 +08:00
    整理得很用心,感谢分享!
    geekard
        7
    geekard  
    OP
       2024-08-28 21:59:59 +08:00
    @zeusho871 嗯嗯,我 port 过一个 slint GUI printdemo 项目到 ESP32-S3-Box-3 开发版(附带用 Rust 手撸 了这个开发板使用的触摸屏驱动 https://github.com/opsnull/rust-slint-printdemo/blob/main/mcu-board-support/gt911.rs )整体交互效果还是比较流畅的: https://x.com/geekard_zj/status/1789599892987613295

    Repo: https://github.com/opsnull/rust-slint-printdemo/tree/main
    zeusho871
        8
    zeusho871  
       2024-08-28 22:21:24 +08:00
    @geekard 这边在开发中 rust 和纯 c 的对比 有兼容性问题吗 我是准备用 rust 写个 wifi 时钟+lixie 灯
    geekard
        9
    geekard  
    OP
       2024-08-29 11:40:26 +08:00
    @zeusho871 从个人的实践看,Rust 和 C 的互操作性,兼容性还是挺好的,而且是 Rust 语言和标准库直接支持的,例如:
    1. 使用 Rust 函数可以通过 extern "C" 修饰来生成符合 C ABI 规范的 lib ,从而可以被 C 代码直接调用;
    2. 反过来 C lib 中的函数,也可以通过 FFI 机制被 Rust 直接调用;

    对于 ESP32 来说,也是同时支持 Rust 和 C 混合开发的,具体可以参考我的 blog:
    1. Rust 集成 C Component: https://blog.opsnull.com/rust-embedded/esp-rs-std-app/#%E4%B8%BA-rust-std-%E5%BA%94%E7%94%A8%E6%B7%BB%E5%8A%A0%E7%BB%84%E4%BB%B6-component
    2. C 集成 Rust 模块: https://blog.opsnull.com/rust-embedded/esp-rs-std-cmake-app/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1015 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:31 PVG 02:31 LAX 10:31 JFK 13:31
    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