Rust编程-crates.io

        发布配置和开发配置:

        [profile.dev]:   > cargo build

                opt-level=0

        [profile.release]: > cargo build --release 

                 opt-level=3

发布到crates.io

        文档注释:

                三斜线(///),使用markdown语法来格式化内容

                可以为函数编写文档注释

                cargo doc命令,基于文档注释生成html文档;cargo doc --open 生成html文档并在浏览器里打开

                在target/doc 路径下生成HTML文档

                编写注释文档需要注意:

                        Panics区域:指出函数可能发生panic的场景

                        Errors区域:函数返回Result的时候,可能会返回Err

                        Safety区域:函数使用了unsafe关键字

        文档注释可用作测试:

                        cargo test会在执行时将文档注释中的代码示例作为测试去运行。(这样设计的目的是为了让文档和代码功能能够保持同步)

        包或模块文档注释://!

                通常被用在包的根文件(也就是惯例上的 src/libs.rs )或模块的根文件上。

                通过它们来描述外部条目的整体意图可以帮助用户理解包的组织结构

pub use来导出公共API

        pub use来重新导出部分条目,可以让用户使用use的时候不用考虑包的内部结构。

创建crates.io账户

        crates.io上注册一个账户并获取一个API令牌(API token)

        命令登录:cargo login abcdefghijklmnopqrstuvwxyz012345 ,Cargo将你的API令牌存入~/.cargo/credentials文件中

为包添加元数据:

         在Cargo.toml 文件的[package]区域中为包添加一些元数据(metadata)。

[package]
name = "xxx"
description=""
version = "0.1.0"
authors = ["<you@example.com>"]
edition = "2018"
license = "MIT" // Linux基金会的Software Package Data Exchange(SPDX)中给出了所有可用的许可协议标识符

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        SPDX文档范围之外的许可证,需要将许可协议的文本以文件形式放置在项目目录中,并使用license-file字段指定文件名称,而不需要license字段来指定。

        发布命令:cargo publish

        总结:

        发布前的准备工作:

                1. 创建账户

                2. 存储API令牌

                3. 为包选择名称等任务

                4. 指定了必要的元数据

cargo.io上移除版本

        cargo yank --vers 1.0.1

        cargo yank --vers 1.0.1 --undo // 取消撤回

 工作空间 (workspace):

        将包拆分成多个代码包

        工作空间是由共用同一个Cargo.lock输出目录的一系列包所组成的。

        工作空间来创建一个项目:

                1. 创建一个文件夹:mkdir add

                2. add目录下添加cargo.toml文件

                3. add目录下添加adder二进制代码包

                        cargo new adder

                4. cargo build来构建整个工作空间

                5. target 目录用来存放所有成员的编译产出物,adder包也就没有了自己独立的target 目录

                6. 整个工作空间只在根目录下有一个Cargo.lock

                7. 调用cargo test会一次性执行工作空间中所有包的测试。

        Cargo.toml配置:

[workspace]
members = ["adder"]

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        工作空间的包的相互依赖:

adder/Cargo.toml
[dependencies]
add-one = { path = "../add-one" } // 依赖内部其他包,指定path

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        工作空间依赖外部包:

        整个工作空间只在根目录下有一个Cargo.lock

        确保了所有的内部包都会使用完全相同的依赖版本

        

       工作空间单元测试: 

        cargo test会一次性执行工作空间中所有包的测试。

        cargo test -p add-one 为某个包运行单元测试

cargo install:

        安装和使用二进制包

        获得其他人在crates.io上分享的工具,只能安装二进制目标(binary target)的包。

        二进制目标:包内存在src/main.rs 或其他被指定为二进制入口的文件

        库目标:本身无法单独执行但非常适合被包含在其他程序中。

        cargo install命令安装的二进制文件都会被存储在Rust安装根目录下的bin 文件夹中

        bin 的路径就是$HOME/.cargo/bin 。为了能够直接运行cargo install安装的工具程序,我们需要将该路径添加到环境变量$PATH中

        $PATH路径中存在二进制文件cargo-something,就可以通过运行cargo something来运行该二进制文件

        cargo --list可以列出所有的自定义命令

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3245340.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL-事务、日志

事务 特性 原子性 是指事务开始后&#xff0c;必须成功执行完所有的操作才会结束&#xff0c;否则会回滚到事务刚开始前。 拿转账来说&#xff0c;一个成功的 A向B转账100元的过程 会涉及如下过程&#xff1a; A&#xff1a;从数据库读取A的余额&#xff1b;A的余额-100&am…

防火墙双机热备和带宽管理练习

目录 实验拓扑 实验需求 实验思路 实验步骤 需求12 需求13 需求14 需求15 需求16 实验拓扑 实验需求 12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c…

网络原理(上)

前言&#x1f440;~ 上一章我们介绍了网络的一些基础知识&#xff0c;今天来讲解一下网络原理相关的知识点&#xff0c;分三篇进行阐述内容有点多​​​​​​​ 再谈协议分层 应用层 传输层&#xff08;重点&#xff09; UDP协议 TCP协议 TCP如何完成可靠传输&#xff…

Windows系统中MySQL的安装和卸载(详细包含msi和zip下载方式,以及完全卸载方法,易出现问题及解决方案等)

MySQL的安装: 第一种:msi安装(交简单,但是不能自定义安装路径) 下载地址:https://dev.mysql.com/downloads/installer/ 选择历史版本 选择安装版本,这里我选择的是8.0.37的版本,然后点击Download下载离线安装包 如下图即为下载好的版本,双击打开安装 出现如下情况,…

设计模式-领域逻辑模式-事务脚本(Transaction Script)

事务脚本的特点 多数应用可看成由多个事务组成事务脚本将多个业务逻辑组织成单个过程事务间相互修改各自产生的数据 事务脚本的运行机制 使用事务脚本时&#xff0c;领域逻辑主要通过系统所执行的事务来组织。例如&#xff1a;预定酒店过程。 事务脚本的组织 将整个事务脚本放…

Qt 多语言

记录Qt多语言的实现过程 目录 1.项目配置文件.pro配置 2.程序中的字符串用tr()封装 3.生成翻译文件 4.使用Qt语言家修改翻译文件 4.1使用Qt语言家打开 4.2 .更改文件配置 5. 生成qm文件 6.代码执行切换语言 6.1入口处 6.2 事件执行 0.效果 1.项目配置文件.pro配置 T…

Redis-基础概念

目录 概念 Redis是什么 Redis 和 MySQL 的区别&#xff1f; Redis单线程有什么极端场景的瓶颈 Redis为什么快? 为什么Redis是单线程? Redis是单线程还是多线程 Redis为什么选择单线程做核心处理 Redis6.0之后引入了多线程&#xff0c;你知道为什么吗? 瓶颈是内存和I…

jmeter之变量随机参数化以及解决多线程不会随机变化

参考链接&#xff1a; https://www.cnblogs.com/Testing1105/p/12743475.html jmeter 使用random函数多线程运行时数据不会随机变化&#xff1f;_jmeter 线程组循环执行时 变量不变-CSDN博客 1、如下图所示&#xff0c;需要对请求参数 autor 和phone进行随机参数化 2、目前有…

基于用户非兴趣/非偏好/非习惯的推荐

基于用户非兴趣、非偏好、非习惯的推荐是一种个性化推荐技术&#xff0c;旨在为用户提供与其日常行为和兴趣模式不同的推荐内容。这种推荐方法的目的是打破用户的信息过滤和习惯&#xff0c;发现新的、潜在的兴趣点&#xff0c;从而提供更广泛和多样化的推荐结果。 通过收集和分…

Qt6 OpenCV4视频监控系统项目源码解析——附源码及编译运行步骤

很多刚毕业&#xff0c;或者想着转行到C Qt方向的小伙伴&#xff0c;平时可能拿不出比较像样的项目。这里你可要好好收藏啦。自己拿回去好好改改&#xff0c;就可以成为自己的项目经历了。祝各位找工作顺利呀。 好了。废话不多说。 这个项目架构采用的是MVC架构&#xff0c;结…

Qt 使用发布工具 windeployqt 来release

本文记录使用qt进行release文件 目录 1. windeployqt 常用选项 2. 创建release文件夹&#xff0c;并将exe文件拷贝进来 3.使用命令 1. windeployqt 常用选项 选项 意义 --release --no-quick-import --translations <languages> --no-translations --no-virtualkeyb…

PTA - 嵌套列表求和

使用递归函数对嵌套列表求和 函数接口定义&#xff1a; def sumtree(L) L是输入的嵌套列表。 裁判测试程序样例&#xff1a; /* 请在这里填写答案 */L eval(input()) print(sumtree(L)) # 调用函数 输入样例&#xff1a; 在这里给出一组输入。例如&#xff1a; [1,[2…

2024华为数通HCIP-datacom最新题库(变题更新⑥)

请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了&#xff0c;如果你准备去考试&#xff0c;还是用的之前的题库&#xff0c;切记暂缓。 1、…

六边形动态特效404单页HTML源码

源码介绍 动态悬浮的六边形,旁边404文字以及跳转按钮,整体看着像科技二次元画风,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head…

图——图的应用02最短路径(Dijkstra算法与Floyd算法详解),拓扑排序及关键路径

前面介绍了图的应用——01最小生成树章节&#xff0c;大家可以通过下面的链接学习&#xff1a; 图——图的应用01最小生成树&#xff08;Prim算法与Kruskal算法详解&#xff09; 今天就讲一下图的其他应用——最短路径&#xff0c;拓扑排序及关键路径。 目录 一&#xff0c…

整数或小数点后补0操作

效果展示&#xff1a; 整数情况&#xff1a; 小数情况&#xff1a; 小编这里是以微信小程序举例&#xff0c;代码通用可兼容vue等。 1.在utils文件下创建工具util.js文本 util.js页面&#xff1a; // 格式…

React@16.x(60)Redux@4.x(9)- 实现 applyMiddleware

目录 1&#xff0c;applyMiddleware 原理2&#xff0c;实现2.1&#xff0c;applyMiddleware2.1.1&#xff0c;compose 方法2.1.2&#xff0c;applyMiddleware 2.2&#xff0c;修改 createStore 接上篇文章&#xff1a;Redux中间件介绍。 1&#xff0c;applyMiddleware 原理 R…

【精品资料】大数据可视化平台数据治理方案(626页WORD)

引言&#xff1a;大数据可视化平台的数据治理方案是一个综合性的策略&#xff0c;旨在确保大数据的质量、安全性、可访问性和合规性&#xff0c;从而支持高效的数据分析和可视化过程。 方案介绍&#xff1a; 大数据可视化平台的数据治理方案是一个综合性的策略&#xff0c;旨在…

Nginx源码windows下编译

参考&#xff1a;Nginx Windows下编译和安装_window 如果编译安装nginx-CSDN博客 参考&#xff1a; Building nginx on the Win32 platform with Visual C 1.安装MSYS2 参考 MSYS2 下 installation 内容下载安装即可。 2.下载依赖库&#xff1a; PCRE:Download PCRE ​ …

在设计电气系统时,电气工程师需要考虑哪些关键因素?

在设计电气系统时&#xff0c;电气工程师需要考虑多个关键因素&#xff0c;以确保系统的安全性、可靠性、效率和经济性。我收集归类了一份plc学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言…