Rust组织下的其他项目介绍

2024-01-09 15:25:39 浏览数 (1)

按当前star数排序

rustlings[1]

https://rustlings.cool/[2]

Rustlings是一个用于学习Rust编程语言的项目,提供小练习帮助熟悉Rust代码的阅读和编写。

需要安装Rust,然后可以使用提供的命令来运行练习并修复其中的错误。项目还提供了一些额外的学习资源,包括Rust官方文档和Rust By Example。完成练习后,可以继续通过构建自己的项目或参与其他开源项目来继续练习的Rust编程技能。

如果需要卸载Rustlings,有两个步骤,首先删除安装脚本创建的练习文件夹,然后运行cargo uninstall来卸载Rustlings二进制文件。

mdBook[3]

使用Rust创建书籍的Markdown工具

https://rust-lang.github.io/mdBook/[4]

mdBook是一个用于从Markdown文件创建在线书籍的实用工具。查看用户指南以了解其功能列表以及安装和使用信息。用户指南还作为演示,展示了书籍的样子。如果您有兴趣为mdBook的开发做出贡献,请查看贡献指南。

book[5]

The Rust Programming Language[6]

这是《The Rust Programming Language》书籍的源代码仓库。该(实体)书由No Starch Press出版,可供购买,也可以免费在线阅读。要构建这本书,需要使用mdBook,可以使用以下命令安装:cargo install mdbook --version。构建完成后,可以在book子目录中找到输出,然后通过浏览器查看。如果想运行测试,可以使用mdbook test命令。同时,欢迎贡献者参与翻译和拼写检查工作。请查看CONTRIBUTING.md文件以了解如何贡献。需要注意的是,由于纸质版本的存在,在线版本会尽量与印刷版本保持一致,因此解决问题或拉取请求可能需要一些时间。

rust-analyzer[7]

rust-analyzer[8]是Rust编程语言的模块化编译器前端,旨在提供出色的集成开发环境(IDE)支持,是rls-2.0项目的一部分。

可以在https://rust-analyzer.github.io/manual.html#installation 查看快速入门指南,了解如何安装。

如果想贡献或了解其内部工作原理,请查看./docs/dev文件夹。

如果要在选择的编辑器中使用rust-analyzer的语言服务器,请查看手册文件夹,其中包含一些提高工作效率的技巧。安全和隐私相关信息可在手册中找到。

如果需要使用和故障排除支持,访问Rust论坛的"IDEs and Editors"类别:https://users.rust-lang.org/c/ide/14

若有关开发和实施的问题,请加入rust-analyzer工作组的Zulip讨论组:https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer

https://rust-lang.zulipchat.com/

关于Zulip:

Zulip是一种实时协作和团队沟通工具,可以用于组织内部的团队交流和协作。它提供了类似于聊天室的界面,使团队成员可以方便地进行即时消息传递,并组织话题和讨论。

与传统的聊天应用程序不同,Zulip以话题为中心组织消息。用户可以创建主题,类似于讨论板块,然后在主题下进行讨论。这种结构化的消息组织方式使得信息更加可管理和可搜索,用户可以更轻松地跟踪和参与感兴趣的讨论。

Zulip还提供了许多其他功能,如私聊、文件共享、代码块高亮显示、提及通知等。它还支持桌面应用程序、移动应用程序和Web界面,使用户可以在不同设备上随时随地进行交流。

Zulip是一个开源项目,可以自己搭建私有的Zulip服务器,也可以使用官方提供的云托管服务。它被广泛用于各种类型的团队,包括软件开发团队、学术研究组、非营利组织等。

总而言之,Zulip是一个功能丰富、结构化和可扩展的团队协作工具,旨在提供高效的实时沟通和协作体验。

有关更多信息,可以访问以下快捷链接:

  • 官网:https://rust-analyzer.github.io/
  • 度量数据:https://rust-analyzer.github.io/metrics/
  • API文档:https://rust-lang.github.io/rust-analyzer/ide/
  • 更新日志:https://rust-analyzer.github.io/thisweek。

Cargo[9]

The Rust package manager[10]

Cargo是Rust项目的包管理器,它负责下载项目依赖并编译项目。通常情况下,如果已经安装了Rust编译器(rustc),那么Cargo也会一并安装在本地。要从源代码编译Cargo,需要满足一些要求,包括C编译器、git等。

Cargo还支持扩展,可以添加新的子命令,而不必修改Cargo本身。此外,Cargo的发布与Rust的发布同步,有详细的发行说明和报告问题的方式。

rust-clippy[11]

A bunch of lints to catch common mistakes and improve your Rust code.

和Go的vet差不多~

https://doc.rust-lang.org/clippy/[12]

https://rust-lang.github.io/rust-clippy/[13]

Clippy 是 Rust 编程语言的 lint 工具, 用于捕获常见错误并改进 Rust 代码质量。

Clippy 包含超过650个 lint 规则,分为不同类别,可以通过配置 lint 级别来控制。项目还提供了如何安装和使用 Clippy 的详细指南,包括作为 cargo 子命令、在项目中使用、以及在 Travis CI 中的配置。

此外,还介绍了如何配置 lint 规则以及如何贡献代码给 Clippy 项目。最后,提供了 Clippy 的许可信息。

Clippy 是一个强大的 Rust 代码分析工具,可以帮助开发者捕获和改进代码中的常见问题。

力荐:

https://github.com/rustaceanclub/rust-slides/tree/master/201904-rustconf.asia/RustconAsia2019_cryptape_workshop

https://llogiq.github.io/2015/06/04/workflows.html

https://github.com/citahub/cita/issues/353

https://github.com/rust-lang/rust-clippy/issues/6623

https://github.com/rust-lang/rust-clippy/issues/7666

Rust By Example[14]

https://doc.rust-lang.org/stable/rust-by-example/[15]

介绍了学习 Rust 编程语言的方式,提供了一个包含实时代码编辑器的 Rust By Example 项目。

可以在线阅读它,也可以在本地安装 Rust 并按照指示进行操作。此外,还提供了多种语言的翻译版本,以及开放源代码的许可证信息。

如果要运行示例代码,需要保持网络连接,但可以离线阅读全部内容。

rustup[16]

Rustup: the Rust toolchain installer

https://rust-lang.github.io/rustup/[17]

Rustup是一个Rust编程语言的工具链安装程序,可以从官方发布渠道安装Rust,方便在稳定版、测试版和夜间版编译器之间轻松切换并保持其更新。

它还提供了标准库的二进制构建,适用于常见平台,使交叉编译更加简单。

Rustup支持所有Rust支持的平台,包括Windows。

rfcs[18]

https://rust-lang.github.io/rfcs/[19]

介绍了Rust编程语言中的RFC(请求评论)流程,用于管理对Rust的重大变更,以确保项目方向得到共识。文章提到了何时需要遵循RFC流程,如何准备提交RFC,以及RFC的生命周期。

总之,RFC是Rust社区中用于提出和讨论重大变更的重要工具,需要经过一系列步骤和讨论,以确保最终的变更得到社区的广泛支持和认可。

rustfmt[20]

https://rust-lang.github.io/rustfmt/[21]

用于按照Rust代码的样式指南格式化Rust代码。

该工具可以在Travis CI构建中使用,支持不同版本的Rust,并且具有一些限制,如无法格式化所有代码,包括宏声明和注释等。

futures-rs[22]

Zero-cost asynchronous programming in Rust

https://rust-lang.github.io/futures-rs/[23]

futures-rs 是 Rust 中提供零成本异步编程的库,它包含了异步编程的基础部分,如 Stream 等关键特性定义,以及像 join!、select! 以及各种异步控制流的工具方法。

可以通过在 Cargo.toml 中添加 futures = "0.3" 来使用,但需要 Rust 1.56 或更高版本。此外,futures-rs 也可以在没有标准库的环境中工作。如果需要在这种情况下使用它,可以通过 futures = { version = "0.3", default-features = false } 来配置。

rust-bindgen[24]

Automatically generates Rust FFI bindings to C (and some C ) libraries.

https://rust-lang.github.io/rust-bindgen/[25]

"bindgen"是一个工具,可以自动生成Rust与C(和部分C )库的外部函数接口(FFI)绑定。它可以根据C头文件生成Rust代码,允许你调用库的函数和使用它的数据类型。此工具支持的最低Rust版本为1.60.0,同时也有一个命令行版本(bindgen-cli),最低支持Rust版本为1.64.0。

此外,你可以通过环境变量来控制bindgen的行为,而无需修改直接使用bindgen的代码。如果需要了解更多细节,可以参考用户指南和API参考文档。工具使用libclang来解析C和C 头文件,可以根据需要修改libclang的搜索方式。如果需要发布新版本,请提出问题以请求发布。如果想贡献代码,可以查看CONTRIBUTING.md文件了解详情。

rust.vim[26]

用于Rust的Vim插件,提供Rust文件检测、语法高亮、格式化、与Syntastic集成等功能。要启用完整功能,需要Vim 8或更高版本。安装需要在.vimrc中添加一些语句,并通过不同的插件管理器来完成。此插件还支持错误检查、源代码浏览、代码格式化以及与Rust Playpen的集成。详细帮助可以通过命令:help rust来查看。

插件使用MIT和Apache 2.0许可证发布。

rls[27]

Repository for the Rust Language Server (aka RLS)

RLS不再受支持,已被弃用,建议用户卸载RLS并按照rust-analyzer手册中的说明安装它。RLS是Rust语言服务器,提供后台运行的服务器,为IDE、编辑器和其他工具提供有关Rust程序的信息,支持功能如“跳转到定义”、“符号搜索”、“重新格式化”和代码完成,并支持重命名和重构。安装步骤包括安装rustup和RLS组件,然后可以在各种IDE和编辑器中使用RLS,以提供丰富的功能,如跳转到定义、查找引用、重命名等,也可以进行配置以满足项目需求。如遇问题,可查看调试和故障排除提示。贡献者可以查看贡献指南了解更多信息。

Miri[28]

An interpreter for Rust's mid-level intermediate representation

这篇内容介绍了一个叫做Miri的实验性解释器,用于运行Rust编程语言的中级中间表示(MIR)。Miri可以运行二进制文件和Cargo项目的测试套件,并检测到某些类别的未定义行为,例如越界内存访问、使用已释放的内存、未初始化数据的无效使用等。它还可以检测内存泄漏,并支持几乎所有Rust语言功能,包括异常处理和并发。

Miri还提供了一些高级功能,如交叉解释,用于在不同目标上模拟程序,以确保字节级数据操作在不同系统上都能正常工作。此外,Miri已经发现了一些现实世界的错误,并提供了一些关于如何使用它的指南。

需要注意的是,Miri并不是能够捕获程序中所有未定义行为的工具,它也无法运行所有类型的程序。有些基本不变量的问题仍然存在,因此在使用Miri时需要谨慎。

regex[29]

An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.

https://docs.rs/regex/latest/regex/[30]

regex是 Rust 中用于正则表达式匹配的库。它采用有限自动机实现,保证在所有输入上都能够线性时间匹配。该库支持类似其他正则表达式引擎的正则语法,但不支持一些效率较低的功能,如回溯和反向引用。使用这个库可以实现快速的正则匹配,避免在循环中重复编译相同的正则表达式。此外,还介绍了如何在 &[u8] 上匹配字节,同时提供了一些其他用途和相关文档链接。

总结:Rust 的 "regex" 库提供了高性能的正则表达式匹配功能,采用有限自动机实现,保证线性时间复杂度。库支持常见的正则语法,但不支持回溯和反向引用。还提供了在 &[u8] 上匹配字节的功能,以及其他相关文档和用途。

crates.io[31]

The Rust package registry

hashbrown[32]

Rust port of Google's SwissTable hash map

https://rust-lang.github.io/hashbrown/hashbrown/index.html[33]

这个内容介绍了一个名为 "hashbrown" 的 Rust 库,它是 Google 的高性能 SwissTable 哈希映射的 Rust 版本。它被改编成可以直接替代 Rust 标准库中的 HashMap 和 HashSet 类型。

这个库的特点包括比标准库 HashMap 快两倍的性能、更低的内存使用、与一些特定功能的兼容性,以及在某些情况下比标准库更适用的优点。此外,它还提供了一些特性,如选择不同的哈希函数和支持不同的序列化库等。

log[34]

Logging implementation for Rust

https://docs.rs/log/latest/log/[35]

Rust语言中的log库,它提供了轻量级的日志记录外观。

这个库提供了一个统一的日志API,使库可以使用这个API来记录信息,而库的消费者可以选择适合其用例的日志记录实现方式。文章还提到了最低支持的Rust版本为1.60.0 ,以及在可执行文件中如何选择和初始化日志记录实现。

此外,还介绍了结构化日志记录的功能,以及一些可用的日志记录实现选项。

This Week in Rust[36]

Data for this-week-in-rust.org

https://this-week-in-rust.org/[37]

"本周Rust",是一份社区驱动的Rust编程语言周报。它强调了该周报的编辑团队以及他们接受的内容类型和不接受的内容类型。周报包括Rust社区的各种工作亮点,如Rust教程、工具更新、播客、屏幕截图、Rust聚会等。

同时,文章还提供了有关如何向周报提交内容以及与GitHub和Docker相关的构建指南。

libc[38]

libc - Raw FFI bindings to platforms' system libraries

Raw bindings to platform APIs for Rust

https://rust-lang.github.io/libc/[39]

Rust编程语言中的libc库,提供了与C语言代码互操作的原始绑定,包括类型定义、常量和函数头。

该库支持多个平台,并导出所有平台特定的类型、函数和常量。用户可以通过在Cargo.toml中添加依赖来使用它。此外,还提供了一些功能和平台支持的相关信息。

chalk[40]

An implementation and definition of the Rust trait system using a PROLOG-like logic solver

https://rust-lang.github.io/chalk/book/[41]

Chalk是一个库,用于实现Rust特质系统,基于类似Prolog的逻辑规则。它被用来回答有关Rust程序的问题,例如“Vec是否实现了Debug?” Chalk将Rust特定信息转换成逻辑形式,并使用逻辑引擎来找到原始查询的答案。

这个库的名字"chalk"来自亚里士多德出生地Chalkidiki,因为Prolog是一种逻辑编程语言,所以这个名字很合适。它还有一个用于调试的REPL,可以通过cargo run来运行。如果想要贡献代码,可以考虑加入Traits Working Group,他们在rust-lang的zulip中的#wg-traits频道里讨论。更多信息可以在chalk书中的贡献章节中找到。

async-book[42]

Asynchronous Programming in Rust

https://rust-lang.github.io/async-book/index.html[43]

这篇内容是关于在Rust中进行异步编程的,要求使用mdbook来构建。首先,需要通过cargo安装mdbook,然后可以运行"mdbook build"来生成完成的书籍,存储在book/目录下。在开发过程中,可以使用"mdbook serve"来启动本地Web服务器,以便查看编辑的变化。

cc-rs[44]

Rust library for build scripts to compile C/C code into a Rust library

https://docs.rs/cc/latest/cc/[45]

这篇内容介绍了一个名为cc-rs的Rust库,用于在构建脚本中将C/C 代码编译成Rust库或应用程序。它提供了简单的构建依赖,可以通过Cargo构建C/C 文件为静态归档。使用cc-rs时,需要在Cargo.toml中添加依赖,并在构建脚本中配置需要编译的C/C 文件。该库还支持通过环境变量进行外部配置,以及一些可选功能,如并行编译、C 支持和CUDA C 支持。最后,它提供了Apache License 2.0和MIT License两种许可证选择。

总结:cc-rs是一个用于在Rust项目中编译C/C 代码的库,支持外部配置和可选功能,提供两种许可证选项。

nomicon[46]

The Dark Arts of Advanced and Unsafe Rust Programming. Nicknamed "the Nomicon."

https://doc.rust-lang.org/nomicon/[47]

这篇内容介绍了一个名为 "The Rustonomicon" 的文档,它深入探讨了高级和不安全的 Rust 编程技巧,被昵称为 "Nomicon"。该文档警告读者,不安全的 Rust 编程可能会导致严重的问题,但同时提供了构建和测试 Nomicon 的方法。作者还鼓励其他人参与贡献,因为这个文档仍然处于草稿状态。

rustc-dev-guide[48]

A guide to how rustc works and how to contribute to it.

https://rustc-dev-guide.rust-lang.org/[49]

这篇内容介绍了一个协作项目,旨在解释rustc编译器的工作原理以及如何为其做贡献。该指南旨在帮助新的贡献者熟悉rustc,也可以帮助有经验的人了解编译器的新部分。要为指南做贡献,可以在问题跟踪器上找到问题并留下评论,确保不重复工作。如果觉得缺少某些内容,也可以提出问题。文章还提供了构建本地静态HTML站点的指令,以及验证链接和生成目录的工具。最后,还介绍了如何修复工具状态失败的步骤。

git2-rs[50]

libgit2 bindings for Rust

https://docs.rs/git2/latest/git2/[51]

这篇内容介绍了一个名为git2-rs的Rust库,用于与libgit2进行绑定。它要求使用Rust版本0.18.0,并需要libgit2版本1.7.1或更新的补丁版本。库包含了libgit2的源代码,因此无需预先安装libgit2库。你可以选择启用Cargo功能vendored-libgit2,以始终编译并静态链接到libgit2的副本。文章还提供了有关构建git2-rs和自动化测试的说明,以及在macOS上使用时可能需要配置的一些注意事项。

vscode-rust[52]

Rust extension for Visual Studio Code

https://marketplace.visualstudio.com/items?itemName=rust-lang.rust[53]

这篇内容介绍了 Rust 对 Visual Studio Code 的支持插件,但需要注意该插件已不再维护,推荐使用 rust-analyzer 插件。该插件提供了许多功能,包括代码补全、跳转到定义、查看定义、查找所有引用、符号搜索、悬浮文档、代码格式化、重构、错误提示、代码片段和构建任务等。用户可以选择使用官方 Rust 语言服务器(RLS)或 rust-analyzer 作为支持插件的语言服务器。插件由 Rust IDEs 和编辑器团队构建和维护,旨在提供稳定高质量的扩展功能。配置选项可在VSCode设置中找到,包括传递给RLS的选项以及与插件相关的选项。插件还包括代码片段和任务支持,以及格式化保存和其他要求。安装和配置需要安装rustup和一些Rust工具链,插件会自动进行相关设置。总之,该插件为在Visual Studio Code中开发Rust项目提供了便捷的工具和功能。

api-guidelines[54]

Rust API guidelines

https://rust-lang.github.io/api-guidelines/[55]

这是关于如何为Rust编程语言设计和呈现API的一些建议。这些建议主要由Rust库团队编写,基于构建Rust标准库和Rust生态系统中的其他crate的经验。您可以在项目中阅读它们并参与讨论提出新的API准则、提问如何应用它们以及提出新建议。该项目根据Apache License,Version 2.0或MIT license授权,你可以选择其中一个许可证来使用它。

polonius[56]

Defines the Rust borrow checker.

https://rust-lang.github.io/polonius/[57]

这篇内容介绍了一个名为"Polonius"的核心库,用于模拟Rust借用检查的算法。它实现了博客文章和演讲中描述的分析。库的详细信息可以在"Polonius书"中找到。这个名字来源于莎士比亚的《哈姆雷特》中Polonius角色的经典引文:"既不借出,也不借入"。

要运行这个库的代码,可以使用cargo run命令,并可以通过-a选项选择不同的分析方式。例如,可以运行以下命令来针对从clap中提取的示例运行分析:

cargo nightly run --release -- -a DatafrogOpt inputs/clap-rs/app-parser-{{impl}}-add_defaults/

默认情况下,cargo run只会输出时间信息。如果需要查看结果,可以使用--show-tuples选项(显示错误),可能还可以使用-v选项(显示更多中间计算)。还可以使用--help选项获取更多文档信息。

如果需要生成自己的输入数据来运行借用检查器,首先需要使用rustc工具运行,并使用-Znll-facts选项生成输入事实。示例命令如下:

rustc -Znll-facts inputs/issue-47680/issue-47680.rs

或者,如果要为一个crate生成输入事实,可以使用以下命令:

cargo rustc -- -Znll-facts

这将生成一个nll-facts目录,其中每个子目录对应一个函数。然后,可以在这些目录上运行借用检查器。

rust-playground[58]

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021[59]

这是Rust Playground的主页,也由Integer 32托管。Rust Playground允许您在本地安装Rust之前或在没有编译器的情况下进行Rust实验。它提供了许多功能,包括具有语法高亮的编辑器,可以针对当前的稳定版、测试版或夜间版编译,以及前100个热门crate(按历史下载量排名)、Rust Cookbook中的crate和它们的所有依赖项。您还可以快速加载和保存代码到GitHub Gist并与朋友分享,以及运行rustfmt和Clippy对源代码进行检查。此外,您还可以查看源代码的LLVM IR、汇编代码或Rust MIR。

Rust Playground采用React前端与Axum后端架构,使用Docker容器提供各种编译器和工具,并对它们进行隔离。它限制了编译器和生成的可执行文件使用的内存量,以及总编译和执行时间。不过,此沙盒不提供磁盘空间限制,但建议将临时目录设置为有限的空间,以防止某个恶意行为填满共享空间。

rust-mode[60]

Emacs configuration for Rust

这篇内容介绍了在Emacs中编辑Rust代码的配置工具rust-mode的重点内容。它包括安装方法、代码缩进、代码格式化、代码美化、运行/测试/编译代码、Clippy静态分析工具、dbg!插入等功能。同时,还提到了与Cargo、clippy和rustfmt的集成,但不提供自动补全或跳转到函数/特性定义功能。此外,还介绍了其他建议的包和扩展,以及如何为包维护者进行自定义和贡献。需要注意的是,某些功能可能需要手动安装或配置。

reference[61]

The Rust Reference

https://doc.rust-lang.org/nightly/reference/[62]

这篇内容介绍了 Rust 编程语言的主要参考文档,强调了这并不是正式规范,可能包含与 Rust 编译器相关的细节。为了构建该项目,需要克隆 GitHub 仓库并设置 Rust 版本为 Nightly,然后运行测试和生成本地 HTML 文档。这份文档是 Rust 语言的重要资源,但不是正式规范。

docs.rs[63]

crates.io documentation generator

https://docs.rs/[64]

"rust-lang/docs.rs"是一个用于托管Rust编程语言的crate文档的开源项目。它会自动构建来自crates.io发布的crate的文档,使用的是Rust编译器的nightly版本。开发该项目的推荐方式是结合使用cargo run和docker-compose,以获得合理的增量构建时间。同时,该项目需要一些本地C依赖项,如gcc、g 、pkg-config等。构建和维护Docs.rs的团队在zulip的#t-docs-rs频道可找到。

rustfix[65]

Automatically apply the suggestions made by rustc

这篇内容介绍了rustfix工具,它的目标是读取并应用Rust编译器(rustc)提出的建议。目前,rustfix分为两个部分:rustfix库,用于处理rustc输出格式的建议,以及cargo-fix,它是一个二进制工具,作为cargo的子命令,用户可以用来修复他们的代码。安装方法是将rustfix库添加到Cargo.toml文件中,然后使用cargo install cargo-fix命令来安装工具。另外,还提供了使用cargo fix --edition命令来将代码迁移到Rust 2021版本的说明。

rust-enhanced[66]

The official Sublime Text 3 package for the Rust Programming Language

Rust编程语言的官方Sublime Text 3包

datafrog[67]

A lightweight Datalog engine in Rust

"rust-lang/datafrog" 是一个轻量级的 Datalog 引擎,旨在嵌入到其他 Rust 程序中使用。它没有运行时,依赖于用户构建和反复应用更新规则,以确保正确性。这个引擎可以帮助你执行数据操作,比如在示例中展示了如何使用 Datafrog 编写可达性查询。如果想了解更多细节,可以查看相关的博客文章。这个项目最初由 Frank McSherry 开发,后来移交给了 rust-lang-nursery 组织。

flate2-rs[68]

DEFLATE, gzip, and zlib bindings for Rust

https://docs.rs/flate2/latest/flate2/[69]

这个项目是rust-lang/flate2-rs,它提供了用于Rust的DEFLATE、gzip和zlib的绑定库。它默认使用miniz_oxide库,这是miniz.c的纯Rust端口。此库还支持其他后端,如广泛使用的zlib库或高性能的zlib-ng库。支持的格式包括deflate、zlib和gzip。它还提供了压缩和解压缩的示例代码以及选择不同后端的说明。

portable-simd[70]

The testing ground for the future of portable SIMD in Rust

这篇内容介绍了 Rust 语言中的可移植 SIMD(单指令,多数据流)API的测试项目,即 Portable SIMD Project Group。它提供了一个代码存储库,可以用于尝试 SIMD 编程。文中提到了如何开始一个小的 SIMD 示例项目,以及支持的向量类型,包括浮点数、有符号整数、无符号整数、指针和掩码类型。这个项目的目标是在 Rust 中提供更好的 SIMD 支持,以提高程序性能。

rust-semverver[71]

Automatic checking for semantic versioning in library crates

这篇内容介绍了一个名为 "rust-semverver" 的工具,用于检查 Rust 库包的语义版本兼容性。该工具已被废弃,建议使用其他替代品。它通过编译不同版本的库包并将它们链接到一个虚拟的空白包中来执行版本兼容性分析。安装使用时,可以将其作为 cargo 插件,并在 CI 环境中检查构建的语义版本兼容性。该工具还提供了 JSON 输出以便与其他工具集成。它遵循 Rust 语言的语义版本控制原则来进行版本兼容性检查,但用户需要注意,检查结果仅为近似值。该工具使用 BSD 许可证分发。

arewewebyet[72]

Are we web yet? A simple reckoning of Rust's readiness for Web-related things.

https://www.arewewebyet.org/[73]

标题:rust-lang/arewewebyet:Rust在Web相关领域的准备情况简要总结。 内容:该分支领先于chris-morgan:master分支639个提交。

简要摘要:这是关于Rust语言在Web开发方面准备情况的分支,领先于原始分支639次提交。

unsafe-code-guidelines[74]

Forum for discussion about what unsafe code can and can't do

https://rust-lang.github.io/unsafe-code-guidelines/[75]

这个仓库的目的是收集和讨论在编写不安全代码时出现的各种问题。主要由opsem团队使用,以跟踪有关操作语义的开放性问题,但如果与不安全代码作者高度相关,也会跟踪一些“非opsem”问题,这些问题属于T-lang或T-type的范围。不安全代码指南参考“书”是以前的努力,旨在系统化一些关于这些问题的共识。它不再积极维护,但仍然可以是获取信息和参考的良好来源。但请注意,除非另有说明,指南中的信息大多是“建议”,仍然可能会更改。当前的共识记录在t-opsem FCPs和Rust语言参考中。此外,Rustonomicon是一份讨论不安全代码的草稿文件,旨在与此处的内容达成一致。它代表了一个组织化的努力,解释如何编写Rust代码,而不是一个参考。所有在这个仓库上的互动(无论是问题、PR还是其他地方)都受Rust行为准则的管理。此外,这个仓库上的所有内容都受到标准Rust许可的约束。

crater[76]

Run experiments across parts of the Rust ecosystem!

https://crater.rust-lang.org/[77]

"Crater" 是一个用于在 Rust 生态系统的部分区域运行实验的工具。其主要目的是检测 Rust 编译器的回归问题,它通过构建大量的 crate(Rust 项目),运行它们的测试套件,并比较 Rust 编译器的两个版本之间的结果来实现这一目的。它可以在本地操作(只需依赖 Docker)或在云上分布式运行。目前仅支持 Linux,并采用 MIT 和 Apache 2.0 双重许可证。Crater 的主要功能包括发现 crates.io 和 GitHub 上的 Rust 代码库、执行自定义 Rust 工具链上的实验、在所有发现的代码库上运行 cargo build 和 cargo test、无需更新依赖或网络访问构建和测试、在所有发现的代码库上运行任意测试、生成带有结果和日志的 HTML 报告以及在 Docker 容器中隔离测试。请注意,不要在非沙盒环境中运行 Crater,因为它会执行破坏性代码。如果想要贡献或了解更多信息,请查阅相关文档。

stdarch[78]

Rust's standard library vendor-specific APIs and run-time feature detection

https://doc.rust-lang.org/stable/core/arch/[79]

这个仓库包含了两个主要的crate:core_arch 实现了 core::arch - Rust 的核心库架构特定的内置函数,而 std_detect 实现了 std::detect - Rust 的标准库运行时CPU特性检测。std::simd 组件现在位于 packed_simd_2 crate 中。这些 crate 提供了Rust标准库中与SIMD相关的功能。

socket2[80]

Advanced configuration options for sockets.

https://docs.rs/socket2/latest/socket2/[81]

Socket2是一个提供创建和使用套接字的工具的crate。它的目标是提供高级配置选项(这些选项在标准库中的类型中不可用)来创建和使用套接字,而不使用任何不安全的代码。Socket2尽量直接访问系统的套接字功能,因此提供了最大的灵活性,但使用它可能需要一些冗长的代码。它支持多个操作系统,并根据不同的级别进行测试和支持。最低支持的Rust版本是1.63.0,项目使用Apache License 2.0或MIT许可证。

packed_simd[82]

Portable Packed SIMD Vectors for Rust standard library

https://rust-lang.github.io/packed_simd/packed_simd_2/[83]

这篇文章介绍了 rust-lang/packed_simd 这个库,它为 Rust 标准库提供了可移植的打包 SIMD 向量支持。该库实现了 Rust RFC #2366:std::simd。需要注意的是,这个库只支持最新的夜间版 Rust 工具链。它包括了 API 文档、性能指南以及一些示例,这些示例展示了如何使用标量和矢量化实现来提高性能。此外,还提供了一些与 ISPC(Single-Program-Multiple-Data)编程模型相关的性能测试结果,以及支持的平台信息和许可证信息。

总的来说,这个库为 Rust 开发者提供了在 SIMD 计算方面的强大工具,同时还包括了性能优化建议和支持的平台信息。

rustc-perf[84]

Website for graphing performance of rustc

https://perf.rust-lang.org/[85]

这个项目是用于监测和基准测试Rust编译器性能的网站。它包括两个主要模块:collector用于收集每个bors提交的数据,而site则用于展示数据,并提供GitHub机器人进行按需基准测试。你可以在collector和site目录的README文件中找到有关前端和后端设置的额外文档,也可以在collector/compile-benchmarks和collector/runtime-benchmarks目录的README文件中找到关于基准程序的额外文档。

crates.io-index[86]

Registry index for crates.io

cfg-if[87]

A if/elif-like macro for Rust #[cfg] statements

这是一个名为cfg-if的宏,用于根据多个参数的条件定义项目。它的结构类似于if-else链,第一个匹配的分支会被生成。这个宏可以帮助在Rust中根据不同条件定义函数或代码块,使代码更具灵活性。它的许可证包括Apache License 2.0和MIT license,可以根据您的选择来使用。

libm[88]

这是一个名为libm的库,是将MUSL的libm移植到Rust语言的项目。其短期目标是为wasm32-unknown-unknown目标(与rust-lang/compiler-builtins一起使用)提供数学支持,例如sin和atan2。长期目标是在核心库中实现数学支持。这个库已经可以在稳定版本的Rust中使用,并提供API文档。还有针对性能的基准测试,但需要使用nightly版本的Rust工具链。

backtrace-rs[89]

Backtraces in Rust

https://docs.rs/backtrace/latest/backtrace/[90]

"rust-lang/backtrace-rs" 是一个用于在 Rust 中在运行时获取回溯信息的库。它提供了与标准库的编程接口,使得处理回溯信息更加方便,同时也支持像标准库的 panic 一样简单地打印当前的回溯信息。你可以使用 "backtrace" 版本 "0.3" 进行安装和使用,通过 "Backtrace" 类型来捕获回溯信息,并在稍后处理。此外,你还可以直接使用 "trace" 和 "resolve" 函数来获取更原始的访问回溯功能。

style-team[91]

Home of the Rust style team

这篇内容介绍了 Rust 风格团队的仓库,该团队负责确定 Rust 的默认代码风格,包括新语言构造的风格,并随时间演进。仓库包含了风格团队的章程、政策,以及夜间语言构造的风格处理方式。所有在此仓库的互动都受 Rust 项目的行为准则管辖。

rust-forge[92]

Information useful to people contributing to Rust

https://forge.rust-lang.org/[93]

Rust Forge是Rust编程语言的附属文档库,供Rust社区成员参考和贡献。开发者可以通过安装mdbook并执行相应命令来构建本地版本,并建议使用serve命令启动本地服务器以便查看和更新修改。此外,Forge使用JavaScript显示发布日期和“无工具破坏周”,如果需要修改JavaScript代码,要确保符合标准样式。最后,文档欢迎Rust团队的贡献,添加团队信息需编辑SUMMARY.md文件,并在相应位置创建文档页面,推荐将团队概要放在README.md中,更大的主题则可以创建为子页面。

glob[94]

Support for matching file paths against Unix shell style patterns.

https://docs.rs/glob/latest/glob/[95]

这篇内容介绍了 rust-lang/glob 库,它支持使用类似Unix shell的模式匹配来匹配文件路径。你可以通过在Cargo.toml文件中添加"glob = "0.3.1""来使用这个库。如果你使用的是 Rust 1.30 或更早版本,或者是2015版的,还需要在你的crate根目录中添加"extern crate glob;"。文章还提供了一个示例,展示如何使用glob库来打印出/media/及其子目录中的所有jpg文件。

docker-rust[96]

这个仓库是 Rust 官方 Docker 镜像的 Git 仓库。你可以在 Docker Hub 页面上找到如何使用这个 Docker 镜像的完整说明,以及有关贡献和问题的信息。如果在 Docker Hub 上看不到已合并的更改,请检查 docker-library/official-images 仓库中的 "library/rust" manifest 文件,特别是带有 "library/rust" 标签的 PR。关于官方镜像的更多信息,请查看 docker-library/official-images 的 readme。此外,还提供了 Rust 夜间工具链的镜像,可以使用 rustlang/rust:nightly。

compiler-team[97]

A home for compiler team planning documents, meeting minutes, and other such things.

https://rust-lang.github.io/compiler-team/[98]

这篇内容介绍了一个名为"compiler-team"的代码仓库,用于存储编译器团队的规划文件、会议记录等信息。要构建网站,需要安装Hugo,并使用一些命令来设置和生成网站。总之,这是一个用于管理编译器团队信息的静态网站代码仓库。

www.rust-lang.org[99]

The home of the Rust website

https://www.rust-lang.org/[100]

这篇内容介绍了如何在本地运行Rust官方网站,并进行开发和贡献。要在本地运行该网站,需要安装Cargo Watch,并使用命令"cargo watch -x run"构建并运行服务器,然后在浏览器中访问http://localhost:7878。如果修改了样式或其他项目文件,Cargo Watch会自动重启服务器,只需刷新浏览器即可查看更改。要编辑样式,需要编辑src/styles/app.scss;要更新组数据,需要编辑src/data/中的yml文件;要编辑页面内容,需要编辑templates中的hbs文件。此外,在提交贡献之前,请阅读CONTRIBUTING.md。最终,网站托管在Heroku上,master分支自动部署到www-staging.rust-lang.org,而deploy分支是master的快照,会手动更新并自动部署到www.rust-lang.org。

wg-async[101]

Working group dedicated to improving the foundations of Async I/O in Rust

https://rust-lang.github.io/wg-async/[102]

这篇内容介绍了一个名为"wg-async"的工作组,专注于改进Rust语言中异步I/O的基础设施。他们提供了一个渲染页面以获取更多信息。

之后是第三页

https://github.com/orgs/rust-lang/repositories?language=&page=3&q=&sort=stargazers&type=all

compiler-builtins[103]

Porting compiler-rt intrinsics to Rust

https://github.com/rust-lang/rust/issues/35437

这篇内容介绍了将compiler-rt的内置函数(intrinsics)移植到Rust语言的过程。如果你在使用一个目标平台,该平台没有通过rustup提供标准库的二进制发行版(通常意味着你需要自己构建核心库),并且需要使用compiler-rt内置函数,可以使用这个crate来解决链接器错误。为此,只需在正在构建的crate的依赖图中添加以下代码:

代码语言:javascript复制
# Cargo.toml

compiler_builtins = { git = "https://github.com/rust-lang/compiler-builtins" }
extern crate compiler_builtins;

如果在添加后仍然遇到“undefined reference to $INTRINSIC”的错误,这意味着该内置函数尚未移植到Rust。你可以通过提交一个带有内置函数名称和目标平台的LLVM三元组(例如thumbv7m-none-eabi)的问题来提醒开发者移植该函数。最后,文章还提到了一些移植时需要注意的事项和一些进展情况。

总之,这篇文章讲解了如何在Rust中移植compiler-rt内置函数,以及如何使用相关的crate来解决链接错误。

measureme[104]

Support crate for rustc's self-profiling feature

这个内容介绍了一个名为"measureme"的支持库,用于Rust编译器的自我分析功能。这个库由Rust编译器团队维护,主要用于rustc自身,所以API可能会随时更改。它包括一些工具,如measureme用于记录事件和序列化为紧凑的二进制格式,summarize用于生成可读的分析数据摘要,stack_collapse用于生成与Flame Graph工具兼容的折叠堆栈跟踪,flamegraph用于生成Flame Graph,crox用于将measureme分析数据转换为可以在Chromium性能工具中可视化的文件。

blog.rust-lang.org[105]

The Rust Programming Language Blog

https://blog.rust-lang.org/

这是Rust编程语言博客,使用一个小型静态站点生成器构建,通过Travis部署到GitHub Pages。要本地构建该站点,首先克隆GitHub仓库,然后运行cargo run。你也可以在不同机器上预览更改,运行cargo run -p serve

glacier[106]

A big 'ol pile of ICE.

这个仓库名为 "glacier",是用于测试 Rust 编译器内部错误(也称为 ICEs)的地方。ICE 意味着出现了意外情况,有时候 ICE 会在不经意间被修复。这个仓库收集了这些错误,并且每天在 Rust nightly 版本上运行 GitHub Actions 来检测。如果 ICE 不再发生,构建将失败,然后可以关闭相关的错误报告。

要帮助改进这个仓库,可以参考 Rust 问题跟踪器中的错误列表,选择一个错误,创建一个与该错误编号相同的文件,将导致 ICE 的代码复制到新文件中,然后发送一个拉取请求。需要注意,在 Windows 上运行时可能会出现误报问题,最好使用 WSL 或 Linux 以获得更准确的结果。

team[107]

这篇内容介绍了Rust团队的结构和管理方式。团队结构信息存储在一个仓库中,与各种服务实时同步,包括Crater、Perf、GitHub团队成员、邮件列表、Zulip用户组成员和官方网站的治理部分。要添加或删除团队成员,可以通过向仓库发送PR来进行操作。还提供了CLI工具来与仓库进行交互,包括运行一些检查、添加人员信息以及查询仓库中的信息。此外,还介绍了如何在列表中加密电子邮件地址,需要联系基础设施团队成员来执行加密操作。

project-error-handling[108]

Error handling project group

这是关于Rust错误处理项目组的存储库,他们的目标是定义和传达Rust的错误处理方式。项目组成员包括Jane Lusby、Sean Chen、Mara Bos等人。你可以通过查看他们的议程、问题跟踪器、项目看板和Zulip聊天来了解他们的工作。参与该项目组对所有人开放,你可以通过在存储库上查看问题和在Zulip聊天中参与讨论来加入。如果你对参加会议感兴趣但由于时间冲突无法参加,请在调度问题中告诉他们,以便最好地安排时间。

atom-ide-rust[109]

Rust IDE support for Atom, powered by the Rust Analyzer or Rust Language Server

这是一个用于Atom的Rust语言支持插件,由Rust Analyzer或Rust Language Server提供支持。它具有自动完成、诊断、文档大纲、跳转到定义、悬停时的类型信息和文档、查找引用、格式化文件、以及Rustup工具链更新检查等功能。用户需要手动安装rust-analyzer,然后可以通过插件设置进行配置。此外,如果遇到问题,可以启用日志记录以进行调试。请注意,RLS不再受支持,如果需要使用RLS,可以安装旧版本的ide-rust插件。插件采用MIT许可证。

stacker[110]

Manual segmented stacks for Rust

https://docs.rs/stacker/latest/stacker/[111]

这篇文章介绍了一个名为 "stacker" 的 Rust 库,它用于实现手动分段栈。这个库允许在程序中标注固定点,当栈达到限制时,它可以自动扩展到堆上。主要用于帮助实现递归算法。该库在跨平台支持上使用了 psm,但在 Windows 上使用了基于 Fibers 的实现。对于不支持的平台,该库仅是一个空操作,代码仍然会触发栈保护页。

cmake-rs[112]

Rust build dependency for running cmake

https://docs.rs/cmake/latest/cmake/[113]

这篇内容介绍了 rust-lang/cmake-rs,这是一个用于运行 cmake 构建工具的 Rust 构建依赖项,用于编译本地库。它支持在 Cargo.toml 中引入,CMake 可执行文件默认为 cmake,除非设置了 CMAKE 环境变量。

rustc-hash[114]

Custom hash algorithm used by rustc (plus hashmap/set aliases): fast, deterministic, not secure

这篇内容介绍了 rustc-hash,它是 Rust 编译器中使用的一种快速哈希算法,用于取代默认的 liballoc 中的 SipHash,以提高性能。该哈希算法不追求加密安全性,而是专注于速度。与 Firefox 使用的算法相同,但修改为生成 64 位哈希值,而不是 32 位。在性能方面,它通常比 rustc 中的 FNV 哈希表更快,虽然碰撞率略高于 FNV,但因为它每次处理最多 8 个字节,所以哈希函数本身的速度更快。

此外,文章还提到了如何在代码中使用 rustc-hash 库,以及如何将其配置为无标准库 (no_std) 模式,以减小库的依赖。

getopts[115]

The getopts repo maintained by the rust-lang project

https://docs.rs/getopts/latest/getopts/[116]

这篇内容介绍了由rust-lang项目维护的getopts仓库,它是用于解析命令行选项的Rust库。文中提供了如何在Cargo.toml中添加getopts库的使用方法,还指出了由于getopts库被rustc使用,因此在更改其行为时需要谨慎。这个库主要用于帮助开发者解析命令行工具的选项。

edition-guide[117]

A guide to changes between various editions of Rust

https://doc.rust-lang.org/stable/edition-guide/[118]

这篇内容是关于Rust编程语言不同版本之间变化的指南。它解释了Rust开发中的"editions"概念,可以在线阅读。指南使用MIT/Apache2双重许可证,与Rust本身相同。如果需要,在本地构建和阅读该指南,需要安装mdBook 0.4,然后可以使用命令"mdbook serve --open"构建并在本地查看。这将生成HTML版本的指南,启动一个位于http://localhost:3000的Web服务器,并在源代码发生更改时自动重建指南,页面也会自动刷新。另外,还可以运行测试,命令是"mdbook test"。

rust-roadmap-2017[119]

这篇文章介绍了Rust编程语言在2017年的路线图,旨在改进Rust的各个方面。文章强调了Rust成功的衡量标准是在生产环境中使用,因此需要提高学习曲线、增加库支持、提升IDE体验等,以吸引更多开发者和组织采用Rust。此外,文章提到了Rust的核心价值是在安全性和性能之间找到平衡,同时强调了提高开发者的生产力是至关重要的目标。最终,文章呼吁Rust在2017年成为“快速、可靠、高效”的编程语言。

a-mir-formality[120]

a model of MIR and the Rust type/trait system

这个项目是一个早期实验性项目,旨在成为Rust MIR的完整、权威的正式模型。如果这些实验取得成功,打算将这个模型作为RFC引入Rust,并将其发展为语言定义的官方部分。Formality分为几个层次,这些层次与chalk和最终的Rust trait解析器实现紧密对应。理想情况下,应该能够轻松地在Formality和代码之间进行双向映射。它包括顶层程序的定义、日志宏、过程宏和用于证明目标的规则等多个层次。

rust-playpen[121]

A web interface for running Rust code

这个项目是一个用于运行Rust代码的Web界面,但已被弃用。如果要报告与https://play.rust-lang.org/托管的Playground相关的问题,请查看下一代Playpen。要运行自己的Rust-Playpen,需要满足一些系统要求,包括使用Docker。您需要创建Docker镜像并启动服务器,然后进行IRC Bot设置。最后,还提供了设置play.rust-lang.org服务器的指南。总之,这是一个用于运行Rust代码的Web界面项目,但现在已不再推荐使用。

areweasyncyet.rs[122]

Are we async yet?

https://areweasyncyet.rs/[123]

这是一个名为"areweasyncyet.rs"的网站,用于跟踪Rust编程语言的async/await语法在语言本身和其生态系统中的开发进展。它是一个静态页面生成器,通过Travis部署到GitHub Pages上。要在本地构建该网站,需要一个GitHub个人访问令牌来从GitHub获取数据,然后将令牌放入.env文件中并执行cargo run。此外,你可以通过在.env文件中添加RUST_LOG=areweasyncyet=debug来启用日志。生成的HTML文件将位于_site目录中,你可以使用任何Web服务器在浏览器中查看它。该Rust代码处理来自GitHub的问题数据,主要内容存储在data.yml和templates目录中。在第一次执行后,获取的数据将存储在当前目录中的cache.json文件中,以避免在更新data.yml和templates时反复获取数据。如果需要最新的GitHub数据,只需删除cache.json文件。

rustc-demangle[124]

Rust symbol demangling

这篇内容介绍了一个名为rustc-demangle的工具,用于解析Rust编程语言中的符号。它是用Rust编写的,并提供了文档和用法说明。除了在Rust中使用外,还可以通过C API包装器在其他编程语言中使用。

highfive[125]

Github hooks to provide an encouraging atmosphere for new contributors

这篇内容介绍了一个名为Highfive的GitHub工具,用于为新的贡献者提供鼓励和支持。Highfive通过配置文件中的规则来分配拉取请求给用户,并可以在Rust项目中使用。安装Highfive只需执行setup.py脚本或使用pip命令,测试需要安装测试依赖,而添加新仓库和启用仓库需要进行配置和设置Webhooks。还提供了本地开发和Docker容器运行的说明。Highfive遵循MIT和Apache许可证。

总之,Highfive是一个用于GitHub的工具,旨在为新的贡献者提供支持和鼓励,可用于Rust项目。

rust-guidelines[126]

标题:rust-lang/rust-guidelines:该存储库已迁移 内容:此存储库已停止维护 请查看新的 fmt-rfcs 存储库。

简要概括:rust-lang/rust-guidelines 存储库已停止维护,建议查看新的 fmt-rfcs 存储库。

wg-allocators[127]

Home of the Allocators working group: Paving a path for a standard set of allocator traits to be used in collections!

https://rust-lang.zulipchat.com/#narrow/stream/197181-t-libs.2Fwg-allocators/topic/hello

这个工作组旨在定义内存分配器的特性和其他API,以不稳定的std::alloc::Allocator特性作为起点。通过额外的类型参数,使诸如Vec之类的集合能够使用任何分配器。讨论历史上发生在RFC#1398,跟踪问题#32838和跟踪问题#42774(至少)等地方。这个存储库的问题跟踪器允许分开讨论和解决各种主题。如果想要参与其中,可以点击GitHub上的“Watch”按钮以获取每个问题和拉取请求的通知。对于更低延迟的讨论,他们在Zulip上有一个t-libs/wg-allocators流。要尝试不同的提案,Tim创建了一个名为TimDiekmann/alloc-wg的crate。要获取更多信息,请查阅readme。

rustwide[128]

Execute your code on the Rust ecosystem.

Rustwide是一个用于在Rust生态系统中执行代码的库,支持Linux和Windows。它默认使用Docker容器进行沙盒化,并可选择在构建过程中限制网络访问,同时仍支持大多数Crate。它提供了经验丰富的构建环境,可用于构建生态系统的大部分内容,这些经验来自于运行Crater和docs.rs项目。Rustwide最初是Crater项目的一部分,后来被提取出来,让整个社区都能受益。Rustwide同时在MIT和Apache 2.0许可下提供,让你可以选择遵循哪个许可。

lang-team[129]

Home of the Rust language design team.

https://lang-team.rust-lang.org/[130]

这是Rust语言设计团队的主页,该团队负责决策有关Rust语言本身的设计,如语法、语义或规范。这个仓库包含规划文件、会议记录等内容,所有互动都受Rust行为准则的约束,而仓库中的所有内容也受到标准的Rust许可协议的规定。可以在lang-team.rust-lang.org上查看该站点的渲染形式。

cargo-bisect-rustc[131]

Bisects rustc, either nightlies or CI artifacts

这个工具是用来对比 Rust 的 nightlies 或 CI 构件的。

rfcbot-rs[132]

Coordinates asynchronous decision making on Rust repositories. Status of tracked issues and PRs can be viewed at https://rfcbot.rs.

https://rfcbot.rs/[133]

Title: rfcbot-rs:协调Rust存储库上的异步决策。可以在https://rfcbot.rs上查看跟踪问题和PR的状态。 内容:rfcbot管理Rust问题和PR的异步决策。可以在相关的仪表板页面上查看最终评论期的状态。 它在rust-lang、rust-lang-nursery和rust-lang-deprecated组织拥有的所有存储库上监听命令。 虽然它的预期用途是RFC,但您可以在需要异步审查/决策周期的任何问题或拉取请求上使用其跟踪。 用法:rfcbot接受GitHub评论中的命令。所有命令都采用以下形式: @rfcbot 命令 每个命令必须单独一行开始,但除此之外,机器人不关心评论中是否有其他文本。 此为有效命令: TEXT TEXT @rfcbot fcp merge TEXT TEXT TEXT 但这不是有效的: TEXT @rfcbot fcp merge TEXT 这两个命令都会被注册: @rfcbot concern FOO @rfcbot concern BAR 示例在每个部分中都有。 命令语法:rfcbot接受大致以下语法: merge ::= "merge" | "merged" | "merging" | "merges"; close ::= "close" | "closed" | "closing" | "closes"; postpone ::= "postpone" | "postponed" | "postponing" | "postpones"; cancel ::= "cancel" | "canceled" | "canceling" | "cancels"; review ::= "reviewed" | "review" | "reviewing" | "reviews"; concern ::= "concern" | "concerned" | "concerning" | "concerns"; resolve ::= "resolve" | "resolved" | "resolving" | "resolves"; poll ::= "ask" | "asked" | "asking" | "asks" | "poll" | "polled" | "polling" | "polls" | "query" | "queried" | "querying" | "queries" | "inquire" | "inquired" | "inquiring" | "inquires" | "quiz" | "quizzed" | "quizzing" | "quizzes" | "survey" | "surveyed" | "surveying" | "surveys"; team_label ::= "T-lang" | .; team_label_simple ::= "lang" | .; team_ping ::= "@"? "rust-lang/lang" | .; team_target ::= team_label | team_label_simple | team_ping; line_remainder ::= . $; ws_separated ::= .; subcommand ::= merge | close | postpone | cancel | review line_remainder | concern line_remainder | resolve line_remainder | poll * line_remainder; invocation ::= "fcp" subcommand | "pr" subcommand | "f?" ws_separated | subcommand; grammar ::= "@rfcbot" ":"? invocation; 每个评论中允许多次出现语法。 这意味着以下内容是可以的: @rfcbot merge 想说的一些东西。 @rfcbot concern foobar 解释关注点。 最终评论期 在提出关于问题/PR/RFC的最终评论期之前,请务必再次检查是否已将正确的团队标签应用于问题。截至2016年9月17日,rfcbot识别这些标签:Core: T-core Language: T-lang Libraries: T-libs Compiler: T-compiler Tools: T-tools Documentation: T-doc 提出FCP 要提出FCP,请使用@rfcbot fcp DISPOSITION,其中DISPOSITION是以下之一。您还可以使用@rfcbot pr DISPOSITION,这将在将来用于改进机器人的状态评论质量。 如果提议者在标记的子团队之一上,rfcbot将创建一个带有审查请求清单的跟踪评论。一旦所有审查请求得到满足并解决了任何关切,它将发布一条评论以表示这一点。在“FCP开始”评论之后的一周,它将发布另一条跟进评论,表示已经过去了一周。 rfcbot将仅从标记团队成员那里请求审查,截至目前为止,仅支持在提出FCP时标记的团队的审查。 取消FCP 要在启动后取消FCP提案,请使用@rfcbot fcp cancel。这将删除所有FCP的记录,包括引发的任何关切(尽管它们的评论将保留)。 审查 要表示您已审查FCP提案,请勾选跟踪评论中您姓名旁边的框,或使用命令@rfcbot reviewed。 关切 要在FCP提案上注册阻碍关切,请使用@rfcbot concern NAME_OF_CONCERN。机器人将解析命令之后的第一个换行符之前的内容,并将其添加到跟踪评论中的关切列表中。 要表示您的关切已解决,请使用@rfcbot resolved NAME_OF_CONCERN。请注意,截至本写作时,只有原始作者可以将其关切标记为已解决。 请注意,每个评论只允许一个关切。 请求反馈 要请求不在标记团队中的用户的反馈,请使用@rfcbot f? @username。这将在数据库中创建一个条目,并标记为已解决,一旦该用户在问题/PR上发表评论。请注意,这些反馈请求不会阻止FCP的开始/结束。如果您需要阻止FCP对该用户的反馈,请创建一个新的关切,然后可以解决。 在未来的更新中,仪表板的UI将更新以显示这些反馈请求,但目前它们不会显示在任何地方。 贡献、行为准则、许可证 请参阅CONTRIBUTING.md。

homu[134]

A bot that integrates with GitHub and your favorite continuous integration service

Homu是一个与GitHub和你喜欢的持续集成服务(如Travis CI、Appveyor或Buildbot)集成的机器人。它的作用是在合并拉取请求之前执行测试程序,以确保合并后的主分支不会出现问题。Homu监听拉取请求的评论,等待来自配置的审阅者的批准评论。一旦拉取请求通过了所有测试,Homu才会将其合并到主分支。需要注意的是,Homu不是Travis CI、Buildbot或Appveyor的替代品,而是在它们之上运行的工具。Homu受到了bors的启发,但与bors不同,Homu是有状态的,不需要在每次运行时从GitHub中重复获取信息,而是使用Webhooks API传递后续的更改。此外,Homu还具有一些其他功能,如rollup、try和对Travis CI和Appveyor的支持。

在使用Homu时,首先需要安装和配置它。安装过程包括安装必要的软件包、创建GitHub账户并生成OAuth应用程序、设置GitHub个人访问令牌以及配置Webhook。然后,你还需要根据你的配置编辑cfg.toml文件。最后,你可以运行Homu来开始使用它。

prev.rust-lang.org[135]

The previous Rust website. The current website's code is at https://github.com/rust-lang/www.rust-lang.org.

https://prev.rust-lang.org/zh-CN/[136]

这篇内容介绍了一个名为"prev.rust-lang.org"的Rust编程语言官方网站的代码仓库,但提到该仓库即将被弃用。目前,他们正在开发一个新的网站,已进入Alpha测试阶段,计划在2018年11月29日进入Beta测试阶段。新网站上线后,旧网站将被淘汰。此外,文章还提到了网站的部署方式(TravisCI和S3)以及本地测试方法(使用jekyll)。

ferris-says[137]

A Rust flavored implementation of cowsay

https://crates.io/crates/ferris-says[138]

这是一个名为"rust-lang/ferris-says"的库,它是基于Rust的"cowsay"的实现,以Ferris作为吉祥物。使用这个库只需要安装Rust编译器的稳定版本。你可以在Cargo.toml中添加"ferris-says"的依赖,并在代码中引入它来创建Ferris说的效果。还有一个名为"fsays"的二进制版本,可以通过"cargo install"命令安装,用于读取标准输入并在控制台输出。此外,你还可以指定输出的宽度,甚至使用多个文件作为输入。详细贡献和许可信息可以在项目的CONTRIBUTING.md和许可证部分找到。原始的Ferris ASCII艺术由@Diggsey创建。

thanks[139]

Celebrate Rust contributors.

https://thanks.rust-lang.org/[140]

这是一个名为"rust-lang/thanks"的静态网站生成器,用于庆祝Rust贡献者。要运行它,您需要安装稳定版的Rust。不需要额外配置,只需运行"cargo run --release",网站就会自动生成并放置在output文件夹中。"Thanks"会每晚运行以更新最新的统计信息。

pkg-config-rs[141]

Build library for invoking pkg-config for Rust

https://docs.rs/pkg-config/latest/pkg_config/[142]

这篇内容介绍了一个名为 "pkg-config-rs" 的库,用于在Rust项目中作为构建依赖项,以便使用系统的pkg-config工具来确定库的位置。这个库需要Rust 1.30 版本。它提供了示例代码,可以用于查找特定库及其最低版本要求。此外,还提供了在交叉编译环境中配置PKG_CONFIG_PATH等环境变量的方法,并警告了在没有适当设置sysroot和搜索路径的情况下启用pkg-config用于交叉编译可能会导致构建失败。

简而言之,这是一个用于Rust项目的构建依赖库,可帮助确定系统库的位置和版本,并提供了交叉编译支持选项。

triagebot[143]

患者分诊

triage 是分诊的意思

Automation/tooling for Rust spaces

https://triage.rust-lang.org/[144]

这是有关rust-lang组织的自动化和工具的内容,其中介绍了Triagebot,这是用于rust-lang组织的问题跟踪和团队协助机器人。它通过接收来自GitHub和Zulip等服务的Webhook通知来执行各种操作,如调整标签。安装和运行Triagebot需要配置数据库、Webhook转发和一些环境变量。这个工具使用MIT许可证和Apache许可证(版本2.0)进行分发。

之前用的是bors

https://github.com/bors-ng/bors-ng

A merge bot for GitHub Pull Requests

https://bors.tech/

Elixir写的

这段内容是关于一个名为Bors-NG的GitHub合并机器人的说明。它强调了Bors-NG的功能,它是一个用于GitHub拉取请求的连续测试工作流程的工具,可以确保主分支不会中断。它还提到GitHub的内置合并队列以及与传统CI系统的区别。该工具的设置需要在GitHub上创建一个应用程序,并配置一些权限和环境变量。最后,它提供了一些部署选项,包括Heroku和Docker。

总的来说,Bors-NG是一个用于确保主分支的稳定性的工具,它通过自动化合并流程来减少维护工作。用户需要在GitHub上注册一个应用程序,然后配置一些权限和环境变量,以便在本地或云上部署该工具。


之后的star都很少了~

参考资料

[1]

rustlings: https://github.com/rust-lang/rustlings

[2]

https://rustlings.cool/: https://rustlings.cool/

[3]

mdBook: https://github.com/rust-lang/mdBook

[4]

https://rust-lang.github.io/mdBook/: https://rust-lang.github.io/mdBook/

[5]

book: https://github.com/rust-lang/book

[6]

The Rust Programming Language: https://doc.rust-lang.org/book/

[7]

rust-analyzer: https://github.com/rust-lang/rust-analyzer

[8]

rust-analyzer: https://rust-analyzer.github.io/

[9]

Cargo: https://github.com/rust-lang/cargo

[10]

The Rust package manager: https://doc.rust-lang.org/stable/cargo/

[11]

rust-clippy: https://github.com/rust-lang/rust-clippy

[12]

https://doc.rust-lang.org/clippy/: https://doc.rust-lang.org/clippy/

[13]

https://rust-lang.github.io/rust-clippy/: https://rust-lang.github.io/rust-clippy/

[14]

Rust By Example: https://github.com/rust-lang/rust-by-example

[15]

https://doc.rust-lang.org/stable/rust-by-example/: https://doc.rust-lang.org/stable/rust-by-example/

[16]

rustup: https://github.com/rust-lang/rustup

[17]

https://rust-lang.github.io/rustup/: https://rust-lang.github.io/rustup/

[18]

rfcs: https://github.com/rust-lang/rfcs

[19]

https://rust-lang.github.io/rfcs/: https://rust-lang.github.io/rfcs/

[20]

rustfmt: https://github.com/rust-lang/rustfmt

[21]

https://rust-lang.github.io/rustfmt/: https://rust-lang.github.io/rustfmt/

[22]

futures-rs: https://github.com/rust-lang/futures-rs

[23]

https://rust-lang.github.io/futures-rs/: https://rust-lang.github.io/futures-rs/

[24]

rust-bindgen: https://github.com/rust-lang/rust-bindgen

[25]

https://rust-lang.github.io/rust-bindgen/: https://rust-lang.github.io/rust-bindgen/

[26]

rust.vim: https://github.com/rust-lang/rust.vim

[27]

rls: https://github.com/rust-lang/rls

[28]

Miri: https://github.com/rust-lang/miri

[29]

regex: https://github.com/rust-lang/regex

[30]

https://docs.rs/regex/latest/regex/: https://docs.rs/regex/latest/regex/

[31]

crates.io: https://github.com/rust-lang/crates.io

[32]

hashbrown: https://github.com/rust-lang/hashbrown

[33]

https://rust-lang.github.io/hashbrown/hashbrown/index.html: https://rust-lang.github.io/hashbrown/hashbrown/index.html

[34]

log: https://github.com/rust-lang/log

[35]

https://docs.rs/log/latest/log/: https://docs.rs/log/latest/log/

[36]

This Week in Rust: https://github.com/rust-lang/this-week-in-rust

[37]

https://this-week-in-rust.org/: https://this-week-in-rust.org/

[38]

libc: https://github.com/rust-lang/libc

[39]

https://rust-lang.github.io/libc/: https://rust-lang.github.io/libc/

[40]

chalk: https://github.com/rust-lang/chalk

[41]

https://rust-lang.github.io/chalk/book/: https://rust-lang.github.io/chalk/book/

[42]

async-book: https://github.com/rust-lang/async-book

[43]

https://rust-lang.github.io/async-book/index.html: https://rust-lang.github.io/async-book/index.html

[44]

cc-rs: https://github.com/rust-lang/cc-rs

[45]

https://docs.rs/cc/latest/cc/: https://docs.rs/cc/latest/cc/

[46]

nomicon: https://github.com/rust-lang/nomicon

[47]

https://doc.rust-lang.org/nomicon/: https://doc.rust-lang.org/nomicon/

[48]

rustc-dev-guide: https://github.com/rust-lang/rustc-dev-guide

[49]

https://rustc-dev-guide.rust-lang.org/: https://rustc-dev-guide.rust-lang.org/

[50]

git2-rs: https://github.com/rust-lang/git2-rs

[51]

https://docs.rs/git2/latest/git2/: https://docs.rs/git2/latest/git2/

[52]

vscode-rust: https://github.com/rust-lang/vscode-rust

[53]

https://marketplace.visualstudio.com/items?itemName=rust-lang.rust: https://marketplace.visualstudio.com/items?itemName=rust-lang.rust

[54]

api-guidelines: https://github.com/rust-lang/api-guidelines

[55]

https://rust-lang.github.io/api-guidelines/: https://rust-lang.github.io/api-guidelines/

[56]

polonius: https://github.com/rust-lang/polonius

[57]

https://rust-lang.github.io/polonius/: https://rust-lang.github.io/polonius/

[58]

rust-playground: https://github.com/rust-lang/rust-playground

[59]

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021

[60]

rust-mode: https://github.com/rust-lang/rust-mode

[61]

reference: https://github.com/rust-lang/reference

[62]

https://doc.rust-lang.org/nightly/reference/: https://doc.rust-lang.org/nightly/reference/

[63]

docs.rs: https://github.com/rust-lang/docs.rs

[64]

https://docs.rs/: https://docs.rs/

[65]

rustfix: https://github.com/rust-lang/rustfix

[66]

rust-enhanced: https://github.com/rust-lang/rust-enhanced

[67]

datafrog: https://github.com/rust-lang/datafrog

[68]

flate2-rs: https://github.com/rust-lang/flate2-rs

[69]

https://docs.rs/flate2/latest/flate2/: https://docs.rs/flate2/latest/flate2/

[70]

portable-simd: https://github.com/rust-lang/portable-simd

[71]

rust-semverver: https://github.com/rust-lang/rust-semverver

[72]

arewewebyet: https://github.com/rust-lang/arewewebyet

[73]

https://www.arewewebyet.org/: https://www.arewewebyet.org/

[74]

unsafe-code-guidelines: https://github.com/rust-lang/unsafe-code-guidelines

[75]

https://rust-lang.github.io/unsafe-code-guidelines/: https://rust-lang.github.io/unsafe-code-guidelines/

[76]

crater: https://github.com/rust-lang/crater

[77]

https://crater.rust-lang.org/: https://crater.rust-lang.org/

[78]

stdarch: https://github.com/rust-lang/stdarch

[79]

https://doc.rust-lang.org/stable/core/arch/: https://doc.rust-lang.org/stable/core/arch/

[80]

socket2: https://github.com/rust-lang/socket2

[81]

https://docs.rs/socket2/latest/socket2/: https://docs.rs/socket2/latest/socket2/

[82]

packed_simd: https://github.com/rust-lang/packed_simd

[83]

https://rust-lang.github.io/packed_simd/packed_simd_2/: https://rust-lang.github.io/packed_simd/packed_simd_2/

[84]

rustc-perf: https://github.com/rust-lang/rustc-perf

[85]

https://perf.rust-lang.org/: https://perf.rust-lang.org/

[86]

crates.io-index: https://github.com/rust-lang/crates.io-index

[87]

cfg-if: https://github.com/rust-lang/cfg-if

[88]

libm: https://github.com/rust-lang/libm

[89]

backtrace-rs: https://github.com/rust-lang/backtrace-rs

[90]

https://docs.rs/backtrace/latest/backtrace/: https://docs.rs/backtrace/latest/backtrace/

[91]

style-team: https://github.com/rust-lang/style-team

[92]

rust-forge: https://github.com/rust-lang/rust-forge

[93]

https://forge.rust-lang.org/: https://forge.rust-lang.org/

[94]

glob: https://github.com/rust-lang/glob

[95]

https://docs.rs/glob/latest/glob/: https://docs.rs/glob/latest/glob/

[96]

docker-rust: https://github.com/rust-lang/docker-rust

[97]

compiler-team: https://github.com/rust-lang/compiler-team

[98]

https://rust-lang.github.io/compiler-team/: https://rust-lang.github.io/compiler-team/

[99]

www.rust-lang.org: https://github.com/rust-lang/www.rust-lang.org

[100]

https://www.rust-lang.org/: https://www.rust-lang.org/

[101]

wg-async: https://github.com/rust-lang/wg-async

[102]

https://rust-lang.github.io/wg-async/: https://rust-lang.github.io/wg-async/

[103]

compiler-builtins: https://github.com/rust-lang/compiler-builtins

[104]

measureme: https://github.com/rust-lang/measureme

[105]

blog.rust-lang.org: https://github.com/rust-lang/blog.rust-lang.org

[106]

glacier: https://github.com/rust-lang/glacier

[107]

team: https://github.com/rust-lang/team

[108]

project-error-handling: https://github.com/rust-lang/project-error-handling

[109]

atom-ide-rust: https://github.com/rust-lang/atom-ide-rust

[110]

stacker: https://github.com/rust-lang/stacker

[111]

https://docs.rs/stacker/latest/stacker/: https://docs.rs/stacker/latest/stacker/

[112]

cmake-rs: https://github.com/rust-lang/cmake-rs

[113]

https://docs.rs/cmake/latest/cmake/: https://docs.rs/cmake/latest/cmake/

[114]

rustc-hash: https://github.com/rust-lang/rustc-hash

[115]

getopts: https://github.com/rust-lang/getopts

[116]

https://docs.rs/getopts/latest/getopts/: https://docs.rs/getopts/latest/getopts/

[117]

edition-guide: https://github.com/rust-lang/edition-guide

[118]

https://doc.rust-lang.org/stable/edition-guide/: https://doc.rust-lang.org/stable/edition-guide/

[119]

rust-roadmap-2017: https://github.com/rust-lang/rust-roadmap-2017

[120]

a-mir-formality: https://github.com/rust-lang/a-mir-formality

[121]

rust-playpen: https://github.com/rust-lang/rust-playpen

[122]

areweasyncyet.rs: https://github.com/rust-lang/areweasyncyet.rs

[123]

https://areweasyncyet.rs/: https://areweasyncyet.rs/

[124]

rustc-demangle: https://github.com/rust-lang/rustc-demangle

[125]

highfive: https://github.com/rust-lang/highfive

[126]

rust-guidelines: https://github.com/rust-lang/rust-guidelines

[127]

wg-allocators: https://github.com/rust-lang/wg-allocators

[128]

rustwide: https://github.com/rust-lang/rustwide

[129]

lang-team: https://github.com/rust-lang/lang-team

[130]

https://lang-team.rust-lang.org/: https://lang-team.rust-lang.org/

[131]

cargo-bisect-rustc: https://github.com/rust-lang/cargo-bisect-rustc

[132]

rfcbot-rs: https://github.com/rust-lang/rfcbot-rs

[133]

https://rfcbot.rs/: https://rfcbot.rs/

[134]

homu: https://github.com/rust-lang/homu

[135]

prev.rust-lang.org: https://github.com/rust-lang/prev.rust-lang.org

[136]

https://prev.rust-lang.org/zh-CN/: https://prev.rust-lang.org/zh-CN/

[137]

ferris-says: https://github.com/rust-lang/ferris-says

[138]

https://crates.io/crates/ferris-says: https://crates.io/crates/ferris-says

[139]

thanks: https://github.com/rust-lang/thanks

[140]

https://thanks.rust-lang.org/: https://thanks.rust-lang.org/

[141]

pkg-config-rs: https://github.com/rust-lang/pkg-config-rs

[142]

https://docs.rs/pkg-config/latest/pkg_config/: https://docs.rs/pkg-config/latest/pkg_config/

[143]

triagebot: https://github.com/rust-lang/triagebot

[144]

https://triage.rust-lang.org/: https://triage.rust-lang.org/

0 人点赞