(有待整理和更新)
这几天看了通过例子学 Rust,在Google Keep上记了一些零碎的笔记,现在把它们都整理到这里。虽然不想看中文版的,但是确实看起来比较快啊,也不影响理解的正确性。
Rust消除警告
先了解rust的“属性”概念,再要知道感叹号表示crate范围的全局属性。属性表示有三种不同的格式。
遇到的警告相关属性(虽然在编译的时候会有提示,还是做下记录吧):
#![allow(dead_code)]
#![allow(unused_variables)]
#![allow(overflowing_literals)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
Rust各种省略号
- 两个点
- 解构省略
- 生成器省略
- 三个点
- 表示闭区间范围
Rust模块及库相关的关键字
use:释放路径到当前作用域;或者使用路径别名
pub:向外部开放
mod:既是定义又是使用声明;根据查找规则链接起了多个文件
extern crate:导入库
Rust编译的一些常见参数
rustc --crate-type=lib/bin --crate-name=<name> --extern <lib-name>=<lib-file>
Rust属性的作用
- 代码的条件编译[cfg]
- 设置 crate 名称、版本和类型(二进制文件或库)[crate]
- 禁用 [lint] (警告)
- 启用编译器的特性[宏、全局导入(glob import))等]
- 链接到一个非 Rust 语言的库
- 标记函数作为单元测试(unit test)
- 标记作为基准某个部分的函数
Rust测试
// 将一个函数标记为一个单元测试。该函数不能接受参数且返回空。
#[test]
// 将一个函数标记为 panic 测试。
#[should_panic]
// 忽略耗时的测试
#[test]
#[ignore]
// 当且仅当测试套件没有运行时,才条件编译
#[cfg(not(test))]
// 当且仅当测试套件运行时,才条件编译
#[cfg(test)]
Rust不安全代码
在 Rust 中,不安全代码块是用于避开编译器的保护策略;具体地说,不安全代码块主要有 4 方面内容:
- 解引用裸指针
- 原始指针(裸指针)
*
和引用&T
有类似的功能;但引用总是安全的,因为它们保证指向一个有效的数据,这得益于借用检查器(borrow checker)。 - 解引用一个裸指针只能通过不安全代码块中来完成。
- 原始指针(裸指针)
- 通过 FFI 调用函数
- 使用
std::mem::transmute
来强制转型(change type)- 从一种类型变到另一种类型的允许简单转换,但是两种类型必须拥有相同的大小和排列
- 内联汇编(inline assembly)
1
共 4 条评论, 1 页
评论区
写评论赞一个
赞一个
🙈
总结的都是精华。