Rust 1.34,针对非公有Crate推出可选注册中心

2019 年 4 月 24 日

Rust 1.34,针对非公有Crate推出可选注册中心

Cargo 1.34 中最重要的特性是支持使用可选cargo注册中心,这可能会成为企业环境中的游戏规则改变者。此外,该版本还包括在文档测试中支持?操作符以及对标准库的一些改进。


到目前为止,对于使用专有/闭源代码的开发人员来说,惟一的选择是在他们的 Cargo.toml 文件中通过 git 或 path 子句指定依赖关系。这在大多数情况下都能正常工作,但主要缺点是不支持版本控制,所以必须总是使用最新的版本。在 Rust 1.34 中,Cargo获得了对可选注册中心的支持,这些注册中心在.cargo/config 中指定,并与 crates.io 共存:


[registries]my-registry = { index = "https://my-intranet:8080/git/index" }
复制代码


一旦你有了私有注册中心,就可以使用注册中心键来声明一个依赖项,这个依赖项应该从那个私有注册中心获取,而不是从cargo.io


[dependencies]other-crate = { version = "1.0", registry = "my-registry" }
复制代码


最简单的 cargo 注册中心可以通过本地 git 存储库实现,该存储库包含一个索引和一个 HTTP/HTTPS 服务器,后者用于承载使用 cargo package 创建的压缩.crate 文件。索引包含一个 config.json 文件,对于每个可用的 crate,还有一个附加文件。Config.json 文件指定从何处获得索引中可用的 crate,以及用于发布的 API 端点(如果有的话)。一个包文件基本上包含了那个特定 crate 可用的包版本列表。


可选注册中心也可以支持 cargo publish。但是,在这种情况下,一个简单的 git 存储库是不够的,你需要提供一个 Web API(通过 config.json 引用)。这个 API 将支持许多操作,包括 publish(/API/v1/crates/new)、yank(/API/v1/crates/{crate_name}/{version}/yank)、unyank(/API/v1/crates/{crate_name}/{version}/unyank)和其他操作。目前,还没有这样一个 API 的可重用的通用实现。


要将 crate 发布到可选注册中心,首先需要将身份验证令牌保存到~/.cargo/credentials 中,使用 cargo login 命令,然后,你可以使用 cargo publish --registry=…


如前所述,在语言层面上,Rust 现在支持在文档测试中使用?。文档测试是一个有用的 Rust 特性,它使你在文档中包含的任何示例都可以被 rustdoc 用作某种单元测试。直到现在,文档测试还不能使用?,除非它们包含 fn main()。


标准库还有其他一些改进。TryFromTryInto转换特性经过稳定化,增加了对易出错转换的支持。例如,使用 TryFrom 可以检查 i64 到 i32 的数字转换是否可行:


let big_number = ...i64;let try_smaller_number = i32::try_from(big_number);assert!(try_smaller_number.is_err());
复制代码


Rust 1.34 标准库包含了更多的特性稳定化,你可以在详细发布说明中查看这些稳定化信息。


关于 Rust 的未来计划,Steve Klabnik 在Hacker News讨论中宣布,对 async/ wait 的支持将在接下来的几个版本中开始提供。此外,Rust 还将引入 const 泛型、泛型关联类型和专门化(specialization)。


查看英文原文Rust 1.34 Introduces Alternative Registries for Non-Public Crates


2019 年 4 月 24 日 08:007978
用户头像

发布了 323 篇内容, 共 140.6 次阅读, 收获喜欢 661 次。

关注

评论

发布
暂无评论
发现更多内容

了解HashMap数据结构,超详细!

程序员的时光

面试 hashmap HashMap底层原理

合约跟单软件开发,一键跟单系统搭建

135深圳3055源中瑞8032

限量,字节技术官十年经验总结并发编程核心方法与框架,太强了

周老师

Java 编程 程序员 架构 面试

技术体系的构成

异想的芦苇

技术 技术管理 研发体系

两个程序员老友的会面

Philips

敏捷开发

极客时间架构师训练营第一周学习总结

爱码士

课程总结

2020,国产数据库崭露峥嵘的发轫之年

墨天轮

数据库 阿里云 华为云 SQL优化 活动专区

LeetCode题解:50. Pow(x, n),暴力法,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

Java高并发编程的一本百科全书《Java高并发编程详解:多线程与架构设计》,把Java语言中最为晦涩的知识点都详解出来了!

Java架构之路

Java 程序员 架构 并发编程 编程语言

华为云如何赋能无人车飞驰?从这群AI热血少年谈起

华为云开发者社区

人工智能 无人驾驶

Spring 5.2.7和SpringBoot 2.3.3中文翻译发布啦!!!

青年IT男

spring springboot

USDT承兑商支付系统开发,区块链跨境支付源码

135深圳3055源中瑞8032

不会java的人能不能读《Head First设计模式》?

Nydia

网易:Flink + Iceberg 数据湖探索与实践

Apache Flink

flink 数据湖

作为一名Java程序员,技术栈的广度深度都不够还想要高薪?请先把这些技术掌握再说。

Java架构之路

Java 程序员 架构 面试 编程语言

一周信创舆情观察(10.12~10.18)

统小信uos

架构师训练营第 1 期第五周总结

Leo乐

极客大学架构师训练营

架构师训练营 - 第一周学习总结

joshuamai

普通人如何站在时代风口学好AI?这是我看过最好的答案

华为云开发者社区

AI 算法

我从高级开发者身上学到的19条编码原则

Java架构师迁哥

区块链多币种钱包开发服务商,多币种钱包APP

135深圳3055源中瑞8032

架构师训练营培训第一周总结

lakers

极客大学架构师训练营

开发一个交易所需要多少费用?币币交易系统

135深圳3055源中瑞8032

1分钟带你入门 React SCU、memo、pureCom

Leo

react.js 前端 React 前端进阶训练营 前端性能优化

笔记本中的“全优生”,英特尔Evo产品上市首日秒光!

intel001

技术都是相通的

小黄鱼

极客大学架构师训练营

大数据上手实战!训练营“9营齐开”第二季限时免费报名啦

Apache Flink

大数据

第五周学习代码技术选型总结

三板斧

极客大学架构师训练营

为什么说容器的崛起预示着云原生时代到来?

华为云开发者社区

容器 云原生 容器云

阿里18道常见的MySQL面试题,含解析

Java架构师迁哥

第一周学习总结

Griffenliu

Rust 1.34,针对非公有Crate推出可选注册中心-InfoQ