Rust 语言学习笔记
[dev-dependencies] iron = "0.2" 5.2.3 自定义编译器配置 cargo 内置五种编译器调用模板,分别为 dev、release、test、bench、doc, 分别用于定义不同类型生成目标时的编译器参数,如果我们自己想改变这些编 译模板,可以自己定义相应字段的值. # 开发模板, 对应`cargo build`命令 [profile.dev] opt-level = 0 # true`时,此字段值 被忽略 # 发布模板, 对应`cargo build --release`命令 [profile.release] opt-level = 3 debug = false rpath = false lto = false debug-assertions = false codegen-units = 1 # 测试模板,对应`cargo test`命令 [profile codegen-units = 1 # 性能评估模板,对应`cargo bench`命令 [profile.bench] opt-level = 3 debug = false rpath = false lto = false debug-assertions = false codegen-units = 1 # 文档模板,对应`cargo doc`命令 [profile0 码力 | 117 页 | 2.24 MB | 1 年前3Comprehensive Rust(简体中文) 202412
("picked a tuple: {:?}", pick(28, ("dog", 1), ("cat", 2))); } • Rust 会根据参数类型和返回值推理出 T 的类型。 • 这与 C++ 模板类似,但 Rust 会立即编译部分通用函数,因此该函数必须对所有符合约束条件的类 型都有效。例如,请尝试修改 pick 函数,如果 n == 0,则返回 even + odd。即使仅使用带有整 数的“pick”实例化,Rust using gn and ninja and a curated set of dependencies. 使用 Rust 编写代码时,您可以选择: • 借助 //build/rust/*.gni 模板(例如 rust_static_library,我们稍后会介绍)使用 gn 和 ninja。该操作会使用经过审核的 Chromium 工具链和 crate。 • 使用 cargo,但仅限于经过审核的 source_set,因 为 整 个 crate 就 是 一 个 编 译 单 元。 static_library 是最小的单元。) 学生可能会疑惑为何我们需要 gn 模板,而不使用 gn 内置的 Rust 静态库支持 进行操作。原因是此模板 支持 CXX 互操作性、各项 Rust 功能以及单元测试,我们稍后便会用到其中的一些功能。 43.1 Including unsafe Rust Code 默认情况下,禁止在0 码力 | 359 页 | 1.33 MB | 10 月前3Rust在物理引擎研发中的应用 崔汉青
macro, or… Generic 表达力不足 不容易做精细性能优化 Procedure Macro 过于复杂 结果不可见 那么,用代码生成代码?Web 开发用的模板引擎, 也可以用于生成 Rust 代码 tera 模板生成分指令集优化的 Rust 代码 提供远超 Procedure Macro 的可读性和易用性 mathbench • 已有开源数学 crates 的 benchmark0 码力 | 22 页 | 1.18 MB | 1 年前3Rust 程序设计语言简体中文版
值对的形式提 供字段,其中 key 是字段的名字,value 是需要存储在字段中的数据值。实例中字段的顺序不 需要和它们在结构体中声明的顺序一致。换句话说,结构体的定义就像一个类型的通用模板, 而实例则会在这个模板中放入特定数据来创建这个类型的值。例如,可以像示例 5-2 这样来声 明一个特定的用户: 文件名:src/main.rs # struct User { # active: bool 会构建一个测试执行程序用来调用被标注的函数,并报告每一个测试是通过还是失 败。 每次使用 Cargo 新建一个库项目时,它会自动为我们生成一个测试模块和一个测试函数。这 个模块提供了一个编写测试的模板,为此每次开始新项目时不必去查找测试函数的具体结构和 语法了。因为这样当然你也可以额外增加任意多的测试函数以及测试模块! 在实际编写测试代码之前,让我们先通过尝试那些自动生成的测试模版来探索测试是如何工作 。为此需要调用 into 方法,它会消费这个中间表示 (intermediate representation,IR)并返回所需的 TokenStream 类型值。 这个宏也提供了一些非常酷的模板机制;我们可以写 #name ,然后 quote! 会以名为 name 的 变量值来替换它。你甚至可以做一些类似常用宏那样的重复代码的工作。查阅 quote crate 的 文档 来获取详尽的介绍。0 码力 | 600 页 | 12.99 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
值对的形式提供 字段,其中 key 是字段的名字,value 是需要存储在字段中的数据值。实例中字段的顺序不需 要和它们在结构体中声明的顺序一致。换句话说,结构体的定义就像一个类型的通用模板,而 实例则会在这个模板中放入特定数据来创建这个类型的值。例如,可以像示例 5-2 这样来声明 一个特定的用户: 文件名:src/main.rs fn main() { let user1 = User Rust 会构建一个测试执行程序用来调用被标注的函数,并报告每一个测试是通过还是失败。 每次使用 Cargo 新建一个库项目时,它会自动为我们生成一个测试模块和一个测试函数。这 个模块提供了一个编写测试的模板,为此每次开始新项目时不必去查找测试函数的具体结构和 语法了。当然你也可以额外增加任意多的测试函数以及测试模块! 在实际编写测试代码之前,让我们先通过尝试那些自动生成的测试模版来探索测试是如何工作 TokenStream。为此需要调用 into 方法,它会消费这个中间表示 (intermediate representation,IR)并返回所需的 TokenStream 类型值。 这个宏也提供了一些非常酷的模板机制;我们可以写 #name ,然后 quote! 会以名为 name 的 变量值来替换它。你甚至可以做一些类似常用宏那样的重复代码的工作。查阅 quote crate 的 文档 来获取完整的介绍。0 码力 | 562 页 | 3.23 MB | 9 天前3Comprehensive Rust(繁体中文)
("picked a tuple: {:?}", pick(28, ("dog", 1), ("cat", 2))); } • Rust 會根據引數型別和傳回的值來推斷 T 的型別。 • 這與 C++ 模板 (template) 類似,但 Rust 會立即對泛型函式進行部分編譯,因此函式必須適用於所 有符合限制條件的型別。舉例來說,如果 n == 0,請嘗試修改 pick 以傳回 even + odd。即使只0 码力 | 358 页 | 1.41 MB | 10 月前3Comprehensive Rust(繁体中文) 202406
("picked a tuple: {:?}", pick(28, ("dog", 1), ("cat", 2))); } • Rust 會根據引數型別和傳回的值來推斷 T 的型別。 • 這與 C++ 模板 (template) 類似,但 Rust 會立即對泛型函式進行部分編譯,因此函式必須適用於所 有符合限制條件的型別。舉例來說,如果 n == 0,請嘗試修改 pick 以傳回 even + odd。即使只0 码力 | 356 页 | 1.41 MB | 1 年前3
共 7 条
- 1