rust学习笔记(6)
模块
定义自己的模块,方便外部的调用
mod可以嵌套
可见程度
分为private和public
其中pub可以分为模块内可见和模块外可见
mod也遵循可见性的要求
// 一个名为 `my_mod` 的模块
mod my_mod {
// 模块中的项默认具有私有的可见性
fn private_function() {
pub fn function() {
pub mod nested {
pub fn function() {
使用模块的时候,需要使用::
访问
fn main() {
// 模块机制消除了相同名字的项之间的歧义。
function();
my_mod::function();
// 公有项,包括嵌套模块内的,都可以在父模块外部访问。
my_mod::indirect_access();
my_mod::nested::function();
结构体
一个mod里面的struct默认是不可见的,并且它的字段默认也是不可见的.
mod my {
// 一个公有的结构体,带有一个公有的字段(类型为泛型 `T`)
pub struct OpenBox<T> {
pub contents: T,
}
// 一个公有的结构体,带有一个私有的字段(类型为泛型 `T`)
#[allow(dead_code)]
pub struct ClosedBox<T> {
contents: T,
}
impl<T> ClosedBox<T> {
// 一个公有的构造器方法
pub fn new(contents: T) -> ClosedBox<T> {
ClosedBox {
contents: contents,
}
}
}
}
use
使用use
字段可以使用模块
// 将 `deeply::nested::function` 路径绑定到 `other_function`。
use deeply::nested::function as other_function;
self
和super
使用不同的关键词可以访问不同的级别的内容
像GO的package一样编写mod
现在的mod编写需要在外部套上一个{}
,如何让这个文件里面的全部内容属于一个mod,这样可以减少一层嵌套
// 此声明将会查找名为 `my.rs` 或 `my/mod.rs` 的文件,并将该文件的内容放到
// 此作用域中一个名为 `my` 的模块里面。
mod my;
fn function() {
println!("called `function()`");
}
fn main() {
my::function();
function();
my::indirect_access();
my::nested::function();
}
这个文件应该被单独放在一个文件夹下面(文件夹的名字应该和mod的名字相同)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!