8.1 crate Rust 程序由 crate(板条箱)组成。每个 crate 都是既完整又内聚的单元,包括单个库或可执行程序的所有源代码,以及任何相关的测试、示例、工具、配置和其他杂项。...Rust 承诺编译器将始终接受该语言的所有现存版本,并且程序可以自由混用以不同版本编写的 crate。2015 版的 crate 甚至可以依赖 2021 版的 crate。...如果把一个函数标记为 pub(crate),那么就意味着它可以在这个 crate 中的任何地方使用,但不会作为外部接口的一部分公开。...它不能被其他 crate 使用,也不会出现在这个 crate 的文档中。...关键字 super 和 crate 在路径中有着特殊的含义:super 指的是父模块,crate 指的是当前模块所在的 crate。
在其 lib.rs 文件中有如下代码: // Re-exported external crates pub extern crate libc; 它通过使用强制合法或安全的类型对 libc 库进行了一次封装
crate(木箱、箱子) crate 指的是 package 编译后的输出文件。以 Windows 为例,可能会产生 .exe 文件或者 .rlib 文件。...crate 有两种类型: executable(可执行的) 和 library(库)。 一个 package 可以包含 0 到 n 个 可执行的 crate,和 0 到 1 个 library。...workspace(工作空间) 通常,我们期望一个 package 只产生一个 crate(编译结果)。 当需要管理多个项目的时候,workspace 提供了一种更友好的方式。
我们在做 Rust 开发编译的时候,常常能在依赖列表中,看到 libc 这个 crate 的身影。我们一般不会直接依赖这个 crate,但是依赖的依赖(的依赖的依赖……)可能就会用到这个 crate。...总的来说,它是 Rust 生态中非常基础非常底层的一个 crate 了。 libc 是什么 libc 是对各平台的系统库的原始 FFI 绑定。...而 Rust 的 libc crate,不完全等价于 C 的 libc 库的封装。...因此,可以直接这样说,Rust libc crate 在 Windows 平台上的功能有限。在 Windows 平台上,建议使用 winapi 这个 crate 进行开发。...Deprecated since 1.8.0: these type aliases are no longer supported by the standard library, the libc crate
crate crate是rust在编译时最小的单元。crate可以包含模块,模块可以定义在其他文件,然后和crate一起编译。 crate 有两种形式:二进制项和库。...crate库和其它编程语言中的library概念一致。 crate root 是一个源文件,Rust 编译器在crate根文件中寻找需要被编译的代码。...package中可以包含至多一个库 crate(library crate)。...package中可以包含任意多个二进制 crate(binary crate),但是必须至少包含一个 crate(无论是库的还是二进制的)。...这样通过以包名开头的路径,公有项就可以在二进制 crate 中使用。二进制 crate 就完全变成了同其它 外部 crate 一样的库 crate 的用户:它只能使用公有 API。
在编写过程宏时,经常需要对TokenStream 进行解析和处理。 而Syn库就是专门用于对TokenStream进行解析。
Rust 纪元第 382 周,评出的周最佳 crate 是大数计算相关的 ibig。目前在 github 星星数量不足 50,还处于开发初期。...虽然以前的 Rust 开发中,大数计算方面使用的是 num crate 的 BigInt 和 BigUint,完全满足需求。但是查阅到 ibig 提供的基准测试,性能挺不错。...所以本文结合目前使用较广的大数计算 crate num,采用 2 种阶乘的不同实现方式,进行实践。尝试一下,看是否进行 crate 替换。 大数计算的概念,就不赘述。...我们设想一个 1000000000 甚至更大的阶乘,不使用大数计算相关 crate,显然是跑不起来的。下面,我们使用 num 和 ibig 进行测试和比较。...所以,目前所使用的 crate num 暂时还是不考虑替换了。
准备 发布 crate 时, 一旦发布无法修改,无法覆盖, 因此要注意邮箱等一些个人信息 访问crates.io 的 帐号设定页面[1],生成Token 并在命令行 执行 cargo login your...token 此命令将告诉 Cargo 你的 API 令牌, 并将其存储在本地 ~/.cargo/credentials crates.io 上crate的名字, 会采取先到先得的方式分配. ----...用途的描述和用户可能在何种条款下使用该 crate 的 license 想要修正这个错误, 需要在 Cargo.toml 中引入这些信息....描述通常是一两句话, 它会出现在 crate 的搜索结果中和 crate 页面里....---- 英文版文档: Publishing a Crate to Crates.io[4] 中文版文档: 将 crate 发布到 Crates.io[5] 参考资料 [1] 帐号设定页面: https
crate 可以包含模块,并且这些模块可以使用 crate 编译的其他文件中定义,正如我们将在接下来的部分中看到的那样。crate 可以有两种形式:二进制 crate 或库 crate。...到目前为止,我们创建的所有 crate 都是二进制 crate。库 crate 没有 main 函数,它们不会编译为可执行文件。相反,它们定义了要与多个项目共享的功能。...例如,我们在猜谜游戏中使用的 rand crate 提供了生成随机数的功能。crate 根是 Rust 编译器从源文件开始,并构成了 crate 的根模块。...Cargo 实际上是一个包,其中包含您用于构建代码的命令行工具的二进制 crate。Cargo 包还包含二进制 crate 所依赖的库 crate。...一个包必须至少包含一个 crate,无论是库crate还是二进制 crate。让我们来看看创建 package 时会发生什么。
「一个包可以包含多个二进制 crate 项和一个可选的 crate 库」。伴随着包的增长,你可以将包中的部分代码提取出来,做成独立的 crate,这些 crate 则作为「外部依赖项」。...的 crate 根。...❝路径有两种形式: 绝对路径absolute path从 crate 根部开始,以 crate 名或者字面量 crate 开头。...我们使用 crate 从 crate 根部开始就类似于在 shell 中使用 / 从文件系统根开始。...在这个例子中,crate 根文件是 src/lib.rs,这也同样适用于以 src/main.rs 为 crate 根文件的二进制 crate 项。
本人做为从数学系转过来做开发的程序员,没有主修过《算法和数据结构》,一直想找个时间补上这一课,趁这个阶段不忙,就动手了。
而添加更加 high-level、更加 Rust 友好的接口则由 sys crate 的更高一级,wrapper crate 来做。...最好把你的 crate 名称包含 warning 和 error 中,因为你的 crate 最终很可能被淹没在别人项目中的几层依赖之下。...在外部测试(tests/ 目录)和其他 crate 中,请确保通过 extern crate _sys; 引用。...如果你想让 crate 更易于使用,最好再出点力做第二个 crate,封装一些 higher-level 接口。 巴士指数 1 没人指望你能7x24(永远)地支持你的 crate。...当你把 crate 发布到 crate.io 后,可以要考虑邀请谁来作为 crate 的共同所有者。在 crate 的页面添加“管理所有者”,或者你可以添加你的 GitHub 团队。
详情:https://github.com/bastion-rs/agnostik MEUSE: 私有的 Cargo crate 注册表 详情:https://github.com/mcorbin/meuse...regex crate 的发展计划 详情:https://github.com/rust-lang/regex/issues/656
Linus Torvalds: 回复 rust: add kernel crate 这是 inus Torvalds 关于 rust: add kernel crate 的一些回复.
第三方crate评估指导 相信很多人在选择crate的时候,都有自己对crate的评估标准,本文从下面十个方面给出评估指导: Licensing Maintainers Unsafe Auditing
前端主要 WEB 应用服务,使用到 crate 包括:tide、rhai、surf、graphql_client、handlebars-rust、cookie 等。...工具类 crate 安装 工程创建完成后,我们即可以进入开发环节了。开发中,一些工具类 crate 可以起到“善其事”的作用,我们需要先进行安装。...cargo-edit,包含 cargo add、cargo rm,以及 cargo upgrade,可以让我们方便地管理 crate。...好的,我们安装这 2 个 crate。...添加依赖 crate 接着,我们需要添加开发所需依赖项。依赖项的添加,我们不用一次性全部添加,我们根据开发需要,一步步添加。首先,从后端工程开始。
第二类,alloc crate 与堆分配值的内存分配相关的类型、函数和特征。...第三类,core crate 作为Rust标准库的基础。...由于较少直接用到core crate,所以本文不做过多介绍。...第四类,模块(标准库的其他crate) 是标准库的一部分,模块crate包括针对并发、I/O,文件系统、网络、异步I/O、错误处理等功能,以及与特定操作系统相关的函数,Rust的官网对std有专门的文档...下图展示了Rust标准库各个领域功能涉及到的具体std模块(如std::io、std::os等) 以下着重对第四类的主要 crate 做一介绍,并附上文档地址 Rust的并发控制相关模块 conurrency
但这种新的解析特性,可能会导致一些 crate 编译不止一次。...工具类 crate 安装 工程创建完成后,我们即可以进入开发环节了。开发中,一些工具类 crate 可以起到“善其事”的作用,我们需要先进行安装。...cargo-edit,包含 cargo add、cargo rm,以及 cargo upgrade,可以让我们方便地管理 crate。...好的,我们安装这 2 个 crate。...虽然 Rust 的稳定性、安全性非常高,但活跃的社区导致 crate 的迭代版本很快。所以我们使用的都是最新版本的 crate,跟上 Rust 生态的最新潮流。
crate 的选择 Rust 生态中,成熟的模板引擎库非常多。...嗯,本次实践用到的主要 crate,大概就是这些。 工程的创建 我们从零开始,进行本次实践。.../frontend-yew" ] 开发环境的配置 本文中,我们先进行开发环境的基础配置,整合各个 crate,并运行展示一个包含 handlebars 模板语法的 HTML 文件即可。...因此,目前需要的主要 crate 仅为 tide、async-std,以及 handlebars-rust;另外,serde 和 serde_json crate 也是需要的。...代码内容如下: use tide::{self, Server, Request}; use serde_json::json; use crate::{State, util::common::Tpl
/frontend-yew" ] yew 开发环境配置 工具类 crate yew 项目构建工具方面,目前成熟可用的主要有 rustwasm 官方开发和维护的 wasm-pack 以及 Anthony...因此笔者选择 trunk,安装其需要 wasm-bindgen-cli 工具 crate。...cargo install trunk wasm-bindgen-cli 依赖项 crate 我们目前仅是 yew 开发环境的初始配置,所以需要的依赖项 crate 仅为 yew 和 wasm-bindgen
领取专属 10元无门槛券
手把手带您无忧上云