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;

selfsuper

使用不同的关键词可以访问不同的级别的内容

像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的名字相同)

posted @   xuhe2  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示