首页 > 其他分享 >rust语言_学习笔记

rust语言_学习笔记

时间:2023-12-19 11:25:41浏览次数:36  
标签:cargo 语言 rs lexopt crate 笔记 搜索 rust

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/ .


标签:cargo,语言,rs,lexopt,crate,笔记,搜索,rust
From: https://www.cnblogs.com/osnosn/p/17913222.html

相关文章

  • uniffi-rs rust 多语言bindings 生成工具
    uniffi-rs是基于webidl描述定义,然后生成不同语言bindings的工具,此工具是在学习pyo3的maturin工具看到的,整理记录下参考玩法 目前支持的语言官方支持的包含了Kotlin,Swift,Python,Ruby当然还有不少社区的实现,比如支持C#以及golang说明以上就是一个简单的记录,后边尝试......
  • R语言采集获取58商铺出租转让信息
    前两篇文章给我一个朋友分析出店铺商品以及地址房源信息,后来去看了下店铺房租有点贵,还是毛坯房,要自己装修,本着节约成本的原则。熬了个通宵,给他采集了一些转租商铺数据,因为数据比较多,过于先进不方便展示,我就将我爬虫程序的模版展示给大家观看,希望能帮助大家。在R语言中,你可以使用rve......
  • 网络流学习笔记
    这个必须写。先梳理一下,到时候再整理,证明先简写或者跳过。流网络:一个有向图,每条边有一个容量,有一个源点\(s\)和一个汇点\(t\)。每条边有一个属性称为容量,如果把流网络抽象成水管的话,那么边的容量就是每根水管的每秒最大承受的进水量。每条边也有一个流量,这个值大于等于\(0\)......
  • 阅读笔记《掌握需求过程》2
    这次我们从第三章开始看,项目启动有关的事项。这一章包含12小节,即icebreaker项目(就是本书中为了方便读者理解需求过程,始终贯穿的实例),产品目标——我们需要该产品的原因是什么,谁为它付钱:客户和顾客,用户——理解他们,风险承担者和顾问,需求限制条件,为您的宝宝命名,设定范围,该产品的成本......
  • 35. 干货系列从零用Rust编写负载均衡及代理,代理服务器的源码升级改造
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......
  • 大数据实验报告 | 填坑笔记
     利用JavaAPI进行这个查找操作的时候,总是顺序输出,考虑是代码的原因 没有进行判定,所以只要不为空都输出出来了,进行条件判定指定行键之后,就可以了!redis启动不起来,考虑换个端口  input目录的创建过程遇到一些小问题 删除不掉就用完整目录删  地址对应正确,否则......
  • [学习笔记]珂朵莉树
    目录0x00:介绍1x00:思想1x01:节点保存1x02:核心操作split1x03:推平操作assign2x00:例题2x01:CF896C2x02:CF915E3x00:总结0x00介绍珂朵莉树(ChthollyTree),又称ODT(OldDriverTree),一种数据结构,但似乎暴力到不能称之为数据结构。可以很好地骗分,在随机数据下十分有效,常用于将\([l......
  • R语言离散时间马尔可夫链(Markov chain)模型分类案例可视化分析
    全文链接:https://tecdat.cn/?p=34576原文出处:拓端数据部落公众号有许多用于马尔可夫链的复杂应用。这些包括用于将多态模型拟合为面板数据的msm和SemiMarkov,用于生存分析应用的mstate,用于估计3状态进行性疾病模型的转移概率的TPmsm,用于将马尔科夫模型应用于健康护理经济应用的he......
  • LightGCL Simple Yet Effective Graph Contrastive Learning For Recommendation论文
    Abstract目前的图对比学习方法都存在一些问题,它们要么对用户-项目交互图执行随机增强,要么依赖于基于启发式的增强技术(例如用户聚类)来生成对比视图。这些方法都不能很好的保留内在的语义结构,而且很容易受到噪声扰动的影响。所以我们提出了一个图对比学习范式LightGCL来减轻基于CL......
  • 《架构师之路:软件架构之美》阅读笔记三
    《架构师之路:软件架构之美》是一本关于软件架构的入门书籍,作者李家智从自己的实践经验出发,结合了业内一些经典的案例和经验,系统地介绍了软件架构的基本概念、原则和方法。本书主要分为三个部分:第一部分介绍了软件架构的基本概念和原则;第二部分详细介绍了一些常用的软件架构模式,如......