【Rust自学】14.4. 发布crate到crates.io

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)
请添加图片描述

14.4.1. 创建并设置crates.io账号

在发布任何 crate 之前,你需要在 crates.io并获取 API 令牌。为此,请访问crates.io主页并登录GitHub帐户(目前只支持GitHub帐户登录)。 如果已登录,打开的帐户设置: https://crates.io/me/并找到API密钥。然后在本地使用cargo login命令并在出现提示时粘贴您的API密钥:

$ cargo login
just1a1nexample

此命令将通知Cargo你的API令牌并将其本地存储在 ~/.cargo/credentials 。要注意的是,此令牌不能与其他任何人共享。如果你泄露了,应该撤销它并在crates.io上生成一个新令牌。

14.4.2. 将元数据添加到crate

在发布crate之前还需要在Cargo.toml文件里的[package]这个区域添加一些元数据:

  • 首先你要确保项目名称在网站上是独一无二。
  • 其次还需要写description,也就是介绍,但是不需要太多,一两句话就可以。description的内容会出现在crate搜索的结果里。
  • 你需要提供这个crate遵循的许可证标识值(可以到spdx.org/licenses/中查找),可以指定多个,用OR隔开,写在license
  • 语义版本信息(写在version
  • 作者(写在author)

当然可以写的信息不止这些,具体可以参阅cargo手册。

整个[Package]区域的写法应该如下:

[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"
description = "A fun game where you guess what number the computer has chosen."
license = "MIT OR Apache-2.0"

14.4.3. 使用命令发布crate

使用命令cargo publish即可发布crate,但是前提是元数据完整且项目名不重复。

cargo publish正常运行时会向你在crates.io中的账号登记的邮箱发送验证邮件,去收件箱确认即可。

如果出现问题,cargo publish会报错:

$ cargo publishUpdating crates.io index
warning: manifest has no description, license, license-file, documentation, homepage or repository.
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
......
error: failed to publish to registry at https://crates.ioCaused by:the remote server responded with an error: missing or empty metadata fields: description, license. Please see https://doc.rust-lang.org/cargo/reference/manifest.html for how to upload metadata

中间我省略了一部分,看Caused by这部分说是缺少元数据导致的错误。

crate一旦发布就是永久性的:该版本无法覆盖,代码无法删除。 这样做是为了依赖于该版本的项目可以继续正常工作。

14.4.4. 发布新版本的crate

如果你需要为已经存在的crate发布最新版本,可以在修改crate源代码后把Cargo.toml中的version值按照语义化版本规范修改,再进行重新发布。

14.4.5. 撤回版本

撤回版本会使新的要使用这个crate的项目不能依赖于这个版本,但是已经基于这个版本写出的项目仍然可以使用并可下载。

其指令是cargo yank --vers 指定的版本。例如要撤回1.0.1版本,就写:

cargo yank --vers 1.0.1

如果你撤回之后又改了主意,想要取消撤回,写:

cargo yank --vers 1.0.1 --undo

yank意味着:

  • 所有已经生成Cargo.lock的项目都不会因版本被撤回而中断
  • 所有将来生成的Cargo.lock文件都不会使用被撤回的版本

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

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

相关文章

青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原

青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原 一、数据库备份与还原二、PostgreSQL中操作数据库的备份与还原1. 使用pg_dump进行逻辑备份2. 使用pg_restore进行逻辑还原3. 使用pg_basebackup进行物理备份4. 还原物理备份注意事项 三、自动备份1. 使用pg_d…

数据结构——实验八·学生管理系统

嗨~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种编程资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…

IBM湖仓一体与向量数据库:访问MinIO控制台(Accessing the MinIO console)

_1、从密钥中复制S3凭证并保存 (Copy the S3 credentials from the secret and save it ) oc extract secret/ibm-lh-config-secret -n ${PROJECT_CPD_INST_OPERANDS} --to- --keysenv.properties | grep -E "LH_S3_ACCESS_KEY|LH_S3_SECRET_KEY&q…

STM32 低功耗设计:从原理到实现的详细介绍

在现代嵌入式系统中,尤其是在需要长时间工作且电池供电的设备中,低功耗设计至关重要。STM32作为一种流行的微控制器系列,广泛应用于便携设备、传感器网络、可穿戴设备等领域,提供了多种低功耗模式来延长电池使用时间并优化整体能效…

View Shadcn UI 2025.1.2 发布公告:全新跑马灯组件与多项优化更新

亲爱的开发者们: 我们很高兴地宣布 View Shadcn UI 2025.1.2 版本正式发布!本次更新带来了全新的跑马灯组件,并对多个现有组件进行了功能增强和问题修复。 🚀 重要链接 GitHub 仓库:https://github.com/devlive-comm…

Ragas-RAG能力评测

Ragas是一个框架,它可以帮助你从不同的方面评估你的问答(QA)流程。它为你提供了一些指标来评估你的问答系统的不同方面,具体包括: 评估检索(context)的指标:提供了上下文相关性&…

“深入浅出”系列之数通篇:(5)TCP的三次握手和四次挥手

TCP(传输控制协议)的三次握手和四次挥手是TCP连接建立和释放的过程。 一、TCP三次握手 TCP三次握手是为了建立可靠的连接,确保客户端和服务器之间的通信能力。具体过程如下: 第一次握手:客户端向服务器发送一个带有…

基于ESP32-IDF驱动GPIO输出控制LED

基于ESP32-IDF驱动GPIO输出控制LED 文章目录 基于ESP32-IDF驱动GPIO输出控制LED一、点亮LED3.1 LED电路3.2 配置GPIO函数gpio_config()原型和头文件3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件3.4 代码实现并编译烧录 一、点亮LED 3.1 LED电路 可以看到&#x…

【设计模式】JAVA 策略 工厂 模式 彻底告别switch if 等

【设计模式】JAVA 策略 工厂 模式 彻底告别switch if 等 目录 【设计模式】JAVA 策略 工厂 模式 彻底告别switch if 等 优势 适用场景 项目结构 关键代码 优势 消除 switch:将分支逻辑分散到独立的策略类中。 开闭原则:新增类型只需添加新的 TypeHa…

使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】

文章目录 关于前情提要FFmpeg是什么使用脚本运行FFmpeg首先,下载ffmpeg.exe然后在视频相同位置写一个bat脚本运行压缩脚本 关于 个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。 江湖有缘相见🤝。如果读者想和我交…

# [Unity] [游戏开发]基础协程应用与实现详解

协程(Coroutine)是Unity中一种用于处理复杂定时逻辑的非常有用的工具。通过协程,可以轻松地在多个帧之间分步执行任务,而不阻塞主线程。本文将介绍如何在Unity中使用协程,并通过简单的实例展示协程的基本应用。 1. 协程的基础概念 在Unity中,协程是通过IEnumerator函数…

Kivy App开发之UX控件Bubble气泡

kivy提供了一个提示气泡的小控件Bubble,使用时可以指定气泡箭头的方向以及显示的图像,还可以作为容器添加其他小控件。 常用属性如下 属性说明orientation气泡内子项的排序方式,可设置为vertical或horizontal,默认horizontalarrow_pos箭头相对于气泡的位置,可设置为left_…

Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件

Dialog的使用&#xff1a; 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…

某大厂一面:Java 构造器是否可以被重写

在 Java 中&#xff0c;构造器&#xff08;Constructor&#xff09;不能被重写&#xff08;Override&#xff09;。这是因为构造器是用于创建对象并初始化对象状态的特殊方法&#xff0c;它与类的实例化过程紧密相关。以下是对这一问题的详细解释&#xff1a; 1. 构造器的特点 …

自然语言处理(NLP)-总览图学习

文章目录 自然语言处理&#xff08;NLP&#xff09;-总览图学习1.一张总览图的学习1. 语音学&#xff08;Phonology&#xff09;2. 形态学&#xff08;Morphology&#xff09;3. 句法学&#xff08;Syntax&#xff09;4. 语义学&#xff08;Semantics&#xff09;5. 推理&#…

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练&#xff08;归纳&#xff09;和预测&#xff08;演绎&#xff09; 归纳: 从具体案例中抽象一般规律…

谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计

技术背景 我们在做RTMP|RTSP播放器的时候&#xff0c;有这样的技术诉求&#xff0c;有的摄像头出来的数据是有角度偏差的&#xff0c;比如“装倒了”&#xff0c;或者&#xff0c;图像存在上下或者左右反转&#xff0c;这时候&#xff0c;就需要播放器能做响应的处理&#xff…

centos 安全配置基线

CentOS 是一个广泛使用的操作系统&#xff0c;为了确保系统的安全性&#xff0c;需要遵循一系列的安全基线。以下是详细的 CentOS 安全基线配置建议&#xff1a; 通过配置核查,CentOS操作系统未安装入侵防护软件,无法检测到对重要节点进行入侵的 解决方案&#xff1a; 安装入侵…

论文阅读--Qwen22.5技术报告

Qwen2 1 引言 所有模型都是在超过7 trillion token&#xff08;7万亿&#xff09;的高质量、大规模数据集上预训练的 2 Tokenizer & Model 2.1 Tokenizer 沿用Qwen&#xff08;Bai等人&#xff0c;2023a&#xff09;的做法&#xff0c;我们采用了基于字节级字节对编码…

网络安全等级保护基本要求——等保二级

《信息安全技术网络安全等级保护基本要求》GB/T22239-2019 7.1 安全通用要求 7.1.1 安全物理环境 7.1.1.1 物理位置选择 本项要求包括&#xff1a; a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内;b) 机房场地应避免设在建筑物的顶层或地下室&#xff0c;否则应加…