rust语言_学习笔记

发布时间 2023-12-19 11:18:47作者: osnosn

rust语言_学习笔记

转载注明来源: 本文链接 来自osnosn的博客,写于 2023-12-10.

安装 rust

cargo 的 config 设置

  • 更换 ustc 源,使用代理。设置缺省registry。见【rust cargo 配置】。

crate库

  • 搜索

  • cli 命令行参数解析 【clap
    应该还有更简单小巧的库。【Collected benchmarks for arg parsing crates written in Rust
    • getopt, 基本符合POSIX参数解析规则。似乎仅支持短参数
    • getopt3, 符合GNU参数解析规则。似乎仅支持短参数
    • clap_lex,用两个循环去match。短参数支持合并写法 "-ab"。
    • lexopt,和libc中的getopt很像。短参数支持合并写法 "-ab"。(我用这款)
    • xflags,用声明宏。 "-a -b"不支持合并写法 "-ab"。
    • argh,用自定义宏(#derive). "-a -b"不支持合并写法 "-ab"。
    • gumdrop,挺高级的。
    • pico-args,似乎不好用。
  • 异步,多线程
  • json解析
  • image库
  • sqlite3
    • 【jgallagher/rusqlite】【sqlite3
  • ini
    • light_ini, ini_core, tini, ini_lib
  • gui
    • fltk
  • 把文件/目录打包到执行文件中
    • embed

Rust中文文档

  • 看其中的【Rust 程序设计语言】,好难。
    • rust语言 本身似乎不复杂,"所有权"也不难理解。
    • "泛型",也好理解。"生命周期",也好理解。
    • "Trait",比较复杂,没看明白做啥用的。
    • "宏"好复杂。又是一种独立的语法。
      包含,用macro_rules!的声明宏,和三种过程宏 (自定义宏 #[derive],类属性宏,类函数宏)。

笔记

创建项目

  • 修改~/.cargo/config。更换 ustc 源,使用代理。设置缺省registry。见【rust cargo 配置】。
  • 选择一个目录,cargo new lexopt-test 创建一个项目。看【cargo-new(1)
  • 搜索 crate,cargo search lexopt,看【cargo-search(1)
  • 添加 crate "lexopt"
    • 方法1:执行 cargo add lexopt,看【cargo-add(1)
      会自动获取最新的版本,并写入 Cargo.toml
      • 删除create,执行 cargo remove lexopt
      • 查看本项目使用的crate,cargo tree
    • 方法2:在 docs.rs 中搜索 lexopt,找到它的版本号。
      手工修改 Cargo.toml,在 [dependencies] 下面,插入一行,
      lexopt = "0.3.0"
      然后执行 cargo update,把这个crate 拉取下来。
      • 删除crate,编辑 Cargo.toml 删除lexot那行。执行cargo update即可。
  • 编写 src/main.rs 使用这个 crate。
    从 【lexopt】 抄它的 example。
  • cargo clean 清理缓存。
  • cargo check 检查。
  • cargo fmt 格式化源码文件。
  • cargo build 编译。
  • cargo vendor pkg 把当前项目依赖的所有包,下载到当前目录的pkg目录中。
    不要下载到 ./ 当前目录,会把当前目录中的所有文件清空

编程中的问题记录

  • 出现 note: #[warn(non_snake_case)] on by default 警告。
    你的项目名称不是蛇形命名。即不是 "单词+下划线+单词" 的命名方式。
    在 src/main.rs 的第一行加入 #![allow(non_snake_case)] 允许非蛇形命名,即可。
  • 查找 Some(),Option()支持的methods。比如 ok_or(), map_or(), unwrap_or()
    去 【doc.rust-lang.org/std】 ,搜索 Some 或 Option,就能找到很多教程中没有介绍的methods。

其他

----end----


转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/17913222.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .