Rust编程-crates.io

news2024/12/23 18:40:10

        发布配置和开发配置:

        [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://www.coloradmin.cn/o/1931141.html

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

相关文章

fatal: read error: Connection reset by peer

参考文章&#xff1a;https://www.cnblogs.com/sisimi/p/7910272.html 问题&#xff1a; 首先确认是否可以访问外网&#xff1a; ping www.baidu.com如果可以访问外网&#xff0c;把 git: 修改为 http: 即可&#xff1a;

高职院校人工智能人才培养成果导向系统构建、实施要点与评量方法

一、引言 近年来&#xff0c;人工智能技术在全球范围内迅速发展&#xff0c;对各行各业产生了深远的影响。高职院校作为培养高技能人才的重要基地&#xff0c;肩负着培养人工智能领域专业人才的重任。为了适应社会对人工智能人才的需求&#xff0c;高职院校需要构建一套科学、…

Java学习 - spring Bean 详解

Bean 的别名配置 接着上一篇文章中的 <bean> 配置&#xff0c;其中配置了 id 属性&#xff0c;通过 id 属性我们就可以获取到对象。其实 <bean> 配置也提供了 name 属性&#xff0c;它是用于定义 Bean 的别名&#xff0c;一个 Bean 的别名是可以有多个的&#xff…

[C++]——同步异步日志系统(7)

同步异步日志系统 一、日志器管理模块&#xff08;单例模式&#xff09;1.1 对日志器管理器进行设计1.2 实现日志器管理类的各个功能1.3. 设计一个全局的日志器建造者1.4 测试日志器管理器的接口和全局建造者类 二、宏函数和全局接口设计2.1 新建一个.h,文件,文件里面放我们写的…

视图库对接系列(GA-T 1400)十九、视图库对接系列(级联)注册

背景 在上一章视图库对接系列(GA-T 1400)十八、视图库对接系列(级联)代码生成中我们已经把代码生成了,那怎么实现级联? 我们可以抓包看设备是怎么注册到我们平台的, 那我们就怎么实现就可以了。 实现 先看设备注册到我们服务端的包 步骤 注册我们可以参考视图库对接系列(…

Data类中的常用方法

Calender类 java.util.Calendar是一个抽象的基类&#xff0c;创建对象需要使用静态方法Calendar.getInstance()完成。通过Calendar对象可以获得详细的日历信息&#xff0c;例如年、月、日、小时、分和秒&#xff0c;Calendar的子类可以实现特定的日历系统。 当前时间 Calenda…

CV每日论文--2024.7.16

1、Radiance Fields from Photons 中文标题&#xff1a;光子的辐射场 简介&#xff1a;神经辐射场(NeRFs)已成为从多个视角捕获的图像进行高质量视图合成的事实标准方法。然而,在野外环境下捕获图像时,仍存在许多挑战,例如低光、高动态范围或快速运动导致的模糊重建和明显的伪…

【MySQL进阶篇】索引

1、索引概述 索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c…

高职院校专业群的生成机制研究

摘要&#xff1a;本研究针对我国产业转型升级背景下高职院校专业群的生成机制进行了深入探讨。运用案例分析法&#xff0c;从生成决策、生成目标、生成规则三个维度出发&#xff0c;对专业群的生成机制进行了系统分析。研究发现&#xff0c;高职院校专业群的生成是一个与产业环…

容器之Harbor

Harbor 是一个开源的企业级 Docker 镜像仓库&#xff0c;用于存储、签名和扫描 Docker 镜像。它由 VMware 开发&#xff0c;旨在增强用户在容器化环境中的安全性和效率。以下是对 Harbor 的详细介绍&#xff1a; 主要功能 1. 镜像管理 镜像存储&#xff1a;提供高效的存储管理…

誉天教育与武汉晴川学院携手开展鸿蒙实训营,共筑鸿蒙生态新篇章!

在数字经济蓬勃发展的今天&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;正逐步构建起一个开放、协同、共赢的生态体系。为了进一步推动鸿蒙生态的繁荣发展&#xff0c;培养更多具备鸿蒙原生应用开发能力的专业人才&#xff0c;誉天教育与武汉晴川学院强强联合&a…

苹果公司等科技巨头涉嫌违规使用 YouTube 视频训练 AI|TodayAI

YouTube 强调&#xff0c;使用其平台内容训练人工智能违反服务条款&#xff0c;苹果公司&#xff08;Apple&#xff09;、Anthropic 等科技巨头却涉嫌违规 根据 Proof News 和 Wired 合作的一项调查报告&#xff0c;超过 17 万个 YouTube 视频成为了苹果公司、Anthropic、Nvid…

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…

单链表算法 - 环形链表I

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/linked-list-cycle/description/思路: 代码: /*** Definition for sin…

Docker的数据管理和网络通信

目录 一、Docker 的数据管理 1&#xff0e;数据卷 2&#xff0e;数据卷容器 二、端口映射 三、容器互联&#xff08;使用centos镜像&#xff09; 四、*Docker 镜像的创建 1&#xff0e;基于现有镜像创建 2&#xff0e;基于本地模板创建 3&#xff0e;基于Dockerfile 创…

第二十章 Nest 大文件分片上传

在前端的文件上传功能中&#xff0c;只要请求头里定义 content-type 为 multipart/form-data&#xff0c;内容就会以下面形式传递到服务端&#xff0c;接着服务器再按照multipart/form-data的格式去提取数据 获取文件数据但是当文件体积很大时 就会出现一个问题 文件越大 请求的…

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符&#xff0c;用于在类的层次结构中进行安全的向上转换&#xff08;从派生类到基类&#xff09;或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换&#xff08;即从派生…

Mysql缓存调优的基本知识(附Demo)

目录 前言1. 配置2. 缓存3. 策略 前言 基本的知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Mysql优化高级篇&#xff08;全&#xff09;Mysql底层原理详细剖析常见面试题&#xff08;全&#xff09; MySQL…

【网络安全的神秘世界】HackBar绕过许可证

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 &#x1f344;问题描述 用Firefox浏览器安装hackbar插件后&#xff0c;按F12键&#xff0c;发现如下提示&#xff1a;无法使…

防火墙的带宽管理

一、实验拓扑 目录 一、实验拓扑 二、实验要求 三、实验步骤 3.1将防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 3.1.1心跳线设置 3.2启用双机热备&#xff0c;并配置VRRP组 3.2.1…