Rust笔记-综合

记录一些遇到的未知的内容

1. Cargo.toml中

1.1 [workspace]

1.1.1 resolver

resolver = “2”
Rust 1.51.0 版本中,Cargo.toml 中将有一个新的可选域 resolver。可以通过设置 resolver=“2”,来告诉 cargo 尝试一种新的方式来解析特性。可以查看 RFC 2957 以获得 resolver 行为的详细描述,其总结如下:

  1. Dev dependencies — 当包被普通依赖项和开发依赖项所共享,仅当当前编译包含开发依赖项时,才启用开发依赖项的特性。
  2. Host dependencies — 当包被普通依赖项和编译依赖项,或过程宏共享时,普通依赖项的特性将独立于编译依赖项或过程宏。
  3. Target dependencies — 当包在编译图中多次出现,并且其中一个实例是特定目标的依赖项,则仅当当前目标正在编译时,才会启用特定目标的依赖项特性。

1.1.2 exclude

exclude 可以将指定的目录排除在工作空间之外

1.2. [patch]

表示用指定的版本覆盖默认的版本

1.3 [profile]

1.3.1 [profile.release]

panic = ‘unwind’ (可用参数:unwind和abort)
unwind表示遇到panic异常后继续运行;
abort表示遇到异常立马停止

1.4 [package]

publish
该字段常常用于防止项目因为失误被发布到 crates.io 等注册服务上,例如如果希望项目在公司内部私有化,你应该设置:publish = false

1.5 [dependencies]

default-features = false
即不使用默认的feature进行编译

features = [],表示仅使用features中指定的部分

1.6 [dev-dependencies]

等同于[dependencies]
不同之处在于,[dependencies]段落声明的依赖用于构建软件包,
[dev-dependencies]段落声明的依赖仅用于构建测试和性能评估。
此外,[dev-dependencies]段落声明的依赖不会传递给其他依赖本软件包的项目

2. 宏

#[macro_use] :可以使被注解的module模块中的宏应用到当前作用域中;或者注释crate中的宏应用到当前crate作用域中。参考:#[macro_use]的用法
#[derive(Debug,xxx)]:Rust提供了一个属性derive来自动实现一些trait,这样可以避免重复繁琐地实现他们,能被derive使用的trait包括:Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2017-2023 Jason
  • Visitors: | Views:

谢谢打赏~

微信