首页 > 其他分享 >将 Rust 库发布到 crates.io

将 Rust 库发布到 crates.io

时间:2022-09-30 09:44:29浏览次数:72  
标签:crates 发布 API io 我们 Rust

将 Rust 库发布到 crates.io

Library publishing to crates.io

在这篇简短的文章中,我将快速展示如何将 rust 库发布到 crates.io。发布一个 crate 允许将库分发到全世界并促进重用。我们可以在多个项目中使用我们的库,只需在我们的 货运.toml 文件。

出于本演示的目的,我将使用我在其他文章中创建的库。 — 简单的 PostgreSQL 连接包装器 与我的 API 开发项目一起工作。我将通过添加所有必需的元数据并使用 货物 发布我的图书馆。

要求

要将库发布到 crates.io,我们需要在我们的 货运.toml。 发布需要许可证、描述、关键字、类别。我们已确保在发布之前已填写所有这些信息。

**姓名** = **“pgdb-lib-rs”  
 版本** = **“0.1.0”  
 编辑** = **《2021》  
 描述** = **“一个简单的数据库包装器,用于在 API 开发项目中使用 Rust。”  
 执照** = **“和”  
 关键词** = [ **“postgres”** , **“数据库”** , **“包装”** , **“postgres 库”** ]  
 **类别** = [ **“数据库实用程序”** , **“数据库包装器”** ]  
 **排除** = [ **“/。主意”** ]

这里要注意的一件事是,如果我们有自定义许可证,我们需要在代码中指定 LICENSE 文件的路径。如果它是 MIT 或 Apache 许可证,我们可以指定 执照 键入键。有了这个微小的变化,我们的 货运.toml 文件现在拥有发布 crate 的所有内容。

自述文件

将我们的库上传到 crates.io 以进行 rust 的另一个要求是要有一个 Readme.md 文件。每当有人访问我们的图书馆主页时,这将显示为 crates.io 上的描述。

在同一个项目中,我们现在添加一个新的 README.md 文件来描述我们的库和一些基本文档。

**#** 自述文件 *** 尚未准备好供公众使用。欢迎提出建议/评论! *** 这是一个基于 SQLX 和 Postgres 的简单 Rust Wrapper。  
  
 要连接到 Postgres,请使用以下命令  
  
 **``` _锈  
_ DATABASE_URL=postgres://postgres:[[email protected]](/cdn-cgi/l/email-protection):5432/fenvoxdb?currentSchema=app  
 异步 fn main(){  
 let db = Database::new().await.expect("数据库连接失败");  
 让行: (i64,) = sqlx::query_as("SELECT $1")  
 .bind(150_i64)  
 .fetch_one(db.get_pool()).await.expect("发生错误");  
 }  
 ```**

我刚刚为我的库添加了一些基本的初始化。因为我将成为现在使用它的人。我会尝试更新它,因为我会继续努力。

到这个时候,我们的库已经准备好发布了。是时候在 crates.io 上创建一个帐户并开始设置我们的发布了。

登记

下一步是在 crates.io 上注册一个帐户并获取 API 令牌。访问 https://crates.io/ 使用 GitHub 创建帐户。

从您的个人资料下拉列表中,查看您的帐户个人资料,然后转到 API 密钥部分。

crates.io account settings.

创建一个新的 API 令牌。为其命名并复制 API 密钥。请注意,您只能访问此密钥一次。如有必要,请将其存放在安全可靠的地方。

一旦我们有了 API 密钥,就可以使用该密钥开始发布了。

从您的库文件夹中,打开一个终端并输入

 货物登录

Cargo 现在将要求您提供 API 密钥。粘贴您在上一步中复制的密钥,然后按 Enter。

现在,这将允许货物代表您发布板条箱。

请注意,要发布库,您还需要在您的帐户中提供经过验证的电子邮件。确保在启动发布命令之前更新您的电子邮件并进行验证。

试运行和发布

这是最后一步。我们现在在发布之前进行一次试运行,以验证没有错误。如果一切顺利,我们就可以发布我们的库并在线查看。

 货物发布--dry-run

如果一切看起来都不错,命令输出的最后一行应该是这样的

 警告:由于空运行而中止上传

现在是发布它的时候了。只需使用上面没有空运行标志的命令。 cargo 将构建您的项目并将其发布到远程 crates 注册表。

 货物出版

如果一切顺利,我们现在可以在 crates.io 上查看我们的库。

[

crates.io:Rust 包注册表

crates.io 上发布的库链接

](https://crates.io/crates/pgdb-lib-rs)

这是与您的团队/整个世界共享库的简单方法。尽管它是一个非常简单的库,但作为公共库使用它还缺少很多东西。我鼓励大家编写一个小型库并在 crates.io 上维护它。随着时间的推移,我将更新我的产品以准备好生产,学习如何记录公共 API,并在代码文档生成中使用。

一开始感觉很难,但随着练习会变得更容易。编写干净代码的最佳方法是遵循最佳实践。无论代码多么难或基本。请记住,如果没有先构建一个像这样的简单库,没有人会构建一个流行的库,而且还有很大的改进空间!

请继续订阅并关注我以获取更多信息!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39954/37153009

标签:crates,发布,API,io,我们,Rust
From: https://www.cnblogs.com/amboke/p/16743850.html

相关文章

  • linux系统:共享库问题之如version `ZLIB_1.2.9‘ not found
    1.错误提示:Gtk-WARNING**:Errorloadingimage'file:///usr/share/themes/Ambiance/gtk-3.0/assets/button-toolbar-active-focused.png':Unabletoloadimage-load......
  • 注意力机制【3】-Self Attention
    自注意力与注意力机制的区别在于,自注意力不依赖于外部信息,其qkv均来自内部,或者说来自输入x,就像我们看到一张狗的照片,尽管照片中有其他物体,但人类能自动聚焦到狗的身......
  • 注意力机制【5】Scaled Dot-Product Attention 和 mask
    ScaledDot-ProductAttention 在实际应用中,经常会用到Attention机制,其中最常用的是ScaledDot-ProductAttention,它是通过计算query和key之间的点积来作为之间的相......
  • Spring启动报错-WebServerException: Unable to start embedded Tomcat
    今天在启动《Spring实战》的示例项目时,出现以下错误:ERROR21308---[ restartedMain]o.s.boot.SpringApplication       :Applicationrunfailedo......
  • [Typescript] 41. Medium - IsUnion
    Implementatype IsUnion,whichtakesaninputtype T andreturnswhether T resolvestoauniontype.Forexample:typecase1=IsUnion<string>//false......
  • 知识图谱实体对齐1:基于平移(translation)的方法
    1导引在知识图谱领域,最重要的任务之一就是实体对齐[1](entityalignment,EA)。实体对齐旨在从不同的知识图谱中识别出表示同一个现实对象的实体。如下图所示,知识图谱\(\m......
  • Optional 常用方法总结
    转载请注明出处:Optional类是JAVA8提供的判断程序是否为空提供的包装工具类;可以减少代码中的是否为空的判断,以及减少NullPointerExceptions;使得程序变得更为健壮......
  • 在platformio自动上传esp8266固件
    不想每次上传固件的时候手工点按钮,修改这个文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py在319行UPLOADERFLAGS=中间增加2行:elifupload......
  • 2022.40 AIOT和双碳目标
    2020年9月我国明确提出2030年“碳达峰”与2060年“碳中和”目标 ,即二氧化碳排放力争于2030年前达到峰值,努力争取2060年前实现碳中和。碳中和是人类能源结构的又一次大的变......
  • FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection
    FCOS3D是在2D检测器FCOS的基础上提出的,是一种单目3D检测算法,根据RGB图像进行3D目标检测.FCOS预测的是一个前景点到边界框的4个距离,而FCOS3D需要预测更多的东西,包括3D中......