本系列是学习 Rust 的学习笔记,本编主要对 https://cheats.rs/ 的语法速查表进行翻译学习
将项目分割成更小的单元并最大限度地减少依赖关系。
示例 | 说明 |
---|---|
mod m {} | 定义一个模块,从 {} 内获取定义。 |
mod m; | 定义一个模块,从 m.rs 或 m/mod.rs 获取定义。 |
a::b | 命名空间路径,指向 a 中的元素 b (mod 、enum 等)。 |
~~~~
::b | 相对于 crate 根目录搜索 b 。 |
~~~~
crate::b | 相对于 crate 根目录搜索 b 。 |
~~~~
self::b | 相对于当前模块搜索 b 。 |
~~~~
super::b | 相对于父模块搜索 b 。 |
use a::b; | 在此作用域直接使用 b ,不再需要 a 。 |
use a::{b, c}; | 同上,但将 b 和 c 引入作用域。 |
use a::b as x; | 将 b 引入作用域但命名为 x ,类似 use std::error::Error as E 。 |
use a::b as _; | 匿名引入 b 到作用域中,用于具有冲突名称的特性。 |
use a::*; | 从 a 中引入所有内容,仅建议用于 a 是一些预导入。 |
pub use a::b; | 将 a::b 引入作用域并从此处重新导出。 |
pub T | 如果父路径是公共的,则 T 也是公共的可见性。 |
~~~~
pub(crate) T | 仅在当前 crate 中最多可见1。 |
~~~~
pub(super) T | 仅在父级中最多可见1。 |
~~~~
pub(self) T | 仅在当前模块中最多可见1(默认情况,与没有 pub 一样)。 |
~~~~
pub(in a::b) T | 仅在祖先 a::b 中最多可见1。 |
extern crate a; | 声明对外部crate的依赖关系。 🗑️ 只需在 '18 中使用 use a::b 。 |
extern "C" {} | _声明_与外部依赖关系和 ABI(例如 "C" )相关的内容,用于FFI。 |
extern "C" fn f() {} | 定义将使用 ABI(例如 "C" )导出到 FFI 的函数。 |
1 子模块中的项目始终可以访问任何项目,无论是否 pub
。
代码组织的简单示例:
-
定义模块(
mod
):模块用于组织和管理代码,可以嵌套使用。示例:mod my_module { // 模块内部的代码 }
-
模块路径:用于指定访问模块中元素的路径。示例:
mod my_module { pub fn my_function() { println!("This is my function"); } } // 使用模块中的函数 fn main() { my_module::my_function(); }
-
使用声明(
use
):用于在作用域中直接使用模块中的元素,避免重复的限定路径。示例:mod my_module { pub fn my_function() { println!("This is my function"); } } // 使用声明 use my_module::my_function; fn main() { my_function(); }
-
可见性修饰符(
pub
):用于指定模块、函数、结构体等的可见性,控制其在其他模块中的可访问性。示例:pub mod my_module { pub fn my_function() { println!("This is my function"); } } // 在其他模块中使用 use my_module::my_function; fn main() { my_function(); }
-
外部依赖声明(
extern crate
):用于声明对外部 crate 的依赖关系,通常在 Rust 2018 版本后不再需要使用。示例:extern crate some_crate;
-
外部块(
extern "C"
):用于声明与外部依赖的 ABI 相关的内容,通常在 FFI 中使用。示例:extern "C" { fn some_external_function(); }