第五章:模块境 · 构建术式藏经阁

“术不可一览而尽,灵不可乱而无序。将万法藏于阁中,方能道术归一。”

顾行云在编撰灵兽系统时,法术文件越写越长,变量冲突频发,灵气流转迟缓。他终于意识到:术不可杂糅一处,需分门别类,自成篇章。

他于古法中悟出一术:模块化(Modularization)

一、mod之术:建立灵术篇章

顾行云开始划分篇章,例如将灵兽相关逻辑存于 spirit.rs

// 文件:spirit.rs
pub struct Spirit {
pub name: String,
pub power: u32,
}

在主术式中引用它:

mod spirit;
use spirit::Spirit; fn main() {
let s = Spirit { name: "凤影".to_string(), power: 99 };
println!("召唤灵兽:{}(力量:{})", s.name, s.power);
}

mod 为藏经阁入口,use 则是借阅灵术之匙。

二、pub之印:通灵共享符

他发现没有加 pub 的灵术成员在主法术中不可见。于是领悟“公开之印”:

  • 默认模块内容私有

  • pub 标记后,方可他处引用。

即:

pub fn summon() { /* ... */ }

三、层叠藏经阁:嵌套模块奥义

他进一步构建层级法藏:

src/
├── main.rs
├── beast/
│ ├── mod.rs
│ ├── fire.rs
│ └── ice.rs

mod.rs 中:

pub mod fire;
pub mod ice;

主程序中:

mod beast;
use beast::fire::ignite; fn main() { ignite();
}

顾行云笑道:“藏术有序,调术有道。”

附术:藏经阁里的试炼封印

在每个模块中也可内设试炼术:

#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_spirit_power() {
let s = Spirit { name: "雷狐".into(), power: 100 };
assert_eq!(s.power, 100);
}
}

模块诀 · 藏术之理

术不可散而无理,亦不可繁而不藏;藏之以篇,引之以匙,掌之以印,试之以封。

https://www.cnblogs.com/niceWk/p/18971749## 第五章:模块境 · 构建术式藏经阁

“术不可一览而尽,灵不可乱而无序。将万法藏于阁中,方能道术归一。”

顾行云在编撰灵兽系统时,法术文件越写越长,变量冲突频发,灵气流转迟缓。他终于意识到:术不可杂糅一处,需分门别类,自成篇章。

他于古法中悟出一术:模块化(Modularization)

一、mod之术:建立灵术篇章

顾行云开始划分篇章,例如将灵兽相关逻辑存于 spirit.rs

// 文件:spirit.rs
pub struct Spirit {
pub name: String,
pub power: u32,
}

在主术式中引用它:

mod spirit;
use spirit::Spirit; fn main() {
let s = Spirit { name: "凤影".to_string(), power: 99 };
println!("召唤灵兽:{}(力量:{})", s.name, s.power);
}

mod 为藏经阁入口,use 则是借阅灵术之匙。

二、pub之印:通灵共享符

他发现没有加 pub 的灵术成员在主法术中不可见。于是领悟“公开之印”:

  • 默认模块内容私有

  • pub 标记后,方可他处引用。

即:

pub fn summon() { /* ... */ }

三、层叠藏经阁:嵌套模块奥义

他进一步构建层级法藏:

src/
├── main.rs
├── beast/
│ ├── mod.rs
│ ├── fire.rs
│ └── ice.rs

mod.rs 中:

pub mod fire;
pub mod ice;

主程序中:

mod beast;
use beast::fire::ignite; fn main() { ignite();
}

顾行云笑道:“藏术有序,调术有道。”

附术:藏经阁里的试炼封印

在每个模块中也可内设试炼术:

#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_spirit_power() {
let s = Spirit { name: "雷狐".into(), power: 100 };
assert_eq!(s.power, 100);
}
}

模块诀 · 藏术之理

术不可散而无理,亦不可繁而不藏;藏之以篇,引之以匙,掌之以印,试之以封。


上一章            [下一章 待续️]

Rust修仙之道 第五章:模块境 · 构建术式藏经阁的更多相关文章

  1. Spring实战第五章学习笔记————构建Spring Web应用程序

    Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...

  2. java并发编程实战笔记---(第五章)基础构建模块

    . 5.1同步容器类 1.同步容器类的问题 复合操作,加容器内置锁 2.迭代器与concurrentModificationException 迭代容器用iterator, 迭代过程中,如果有其他线程 ...

  3. Python学习系列----第五章 模块

    5.1 如何引入模块 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入.在调用math模块中的函数时,必须这样引用: ...

  4. 【java并发编程实战】第五章:基础构建模块

    1.同步容器类 它们是线程安全的 1.1 vector和hashtable. 和Collections.synchronizeXxx()一样.实现方式就是在每个方法里面加入synchronize代码块 ...

  5. 第五章 模块之random 、hashlib、time /datetime

    5.2 random 返回随机生成的一个实数 random.randint() 返回随机生成的一个实数 import random #调用模块​def get_random_code(length=6 ...

  6. 第五章 模块之 shtil 、 json / pickle、importlib、collections

    5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...

  7. 第五章 模块之 getpass、sys、os

    5.5 getpass 密码不显示(只能在终端运行) 密码不显示(只能在终端运行) import getpass​pwd = getpass.getpass('请输入密码:')if pwd == '1 ...

  8. 第五章 模块之 logging、copy、re

    5.12 logging 日志模块 报警等级 CRITICAL = 50 # 最高FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = ...

  9. 第五章 模块之 struct、dis、正则表达式、异常处理

    5.15 struct模块 pack 能够把所有的数字都固定的转换成4字节 5.16 dis dis.dis 查看计算机指令 5.16 正则表达式 基础 正则表达式概念: 是一种规则(元字符,量词) ...

  10. 从零搭建Golang开发环境--go修仙序章

    1. 什么是go语言 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态 .强类型.编译型语言 .Go 语 ...

随机推荐

  1. 【Python】配置pip使用国内镜像源

    配置pip使用国内镜像源 零.问题 使用pip安装插件时总是很慢,咋解决呢? 壹.解决 在桌面上你的文件夹内新建pip目录,一般路径如下:C:\Users\{$你的用户名},比如我的用户名是Minuy ...

  2. 学习unigui【26】关于Unigui控件的个性化CSS框架

    用unigui写程序,简单的事用户界面不用HTML.因为这个太闹心了.没有什么技术含量,但很闹心. 但是,但是不清楚HTML CSS更闹心.因为养眼的界面是客户起步疑问和要求. 强烈推荐认真读明白大虾 ...

  3. DevOps与:cloud,IaC,Container,Microservices, Serverless

    本文我们来理一理当下最火的技术与DevOps的关系,2020年可以考虑从如下的几方面来改进DevOps. DevOps代表开发和运营.它的目标是将开发.质量保证和运营(部署和集成)合并到一个单一的.连 ...

  4. MySQL的并发问题的解决方案

    怎么解决脏读.不可重复读.幻读这些问题呢?其实有两种可选的解决方案 方案一.读操作利用MVCC(多版本并发控制),写操作进行加锁. 所谓的MVCC,就是生成一个ReadView,通过ReadView找 ...

  5. python之“if __name__=="__main__"”的代表的意思和用法

    创建下方脚本A def print_sum(a): print(a) print_sum(20) if __name__=="__main__": print("test ...

  6. Java 中堆和栈的区别是什么?

    Java 中堆和栈的区别 Java 中的堆(Heap)和栈(Stack)是两种不同的内存区域,它们有着不同的用途和特点.以下是它们的主要区别: 1. 存储内容 堆:用于存储对象实例以及类的实例变量.所 ...

  7. git提示fatal: Authentication failed for但是不进入重新登录的流程,也死活不弹窗的解决办法,不用找证书删

    问题: git提交代码输错了密码,提示 fatal: Authentication failed for xxx 但是不进入重新登录的流程,也死活不弹窗. 感觉git的这个设计真的很沙雕.网上说删证书 ...

  8. Tortoise-ORM级联查询与预加载性能优化

    title: Tortoise-ORM级联查询与预加载性能优化 date: 2025/04/26 12:25:42 updated: 2025/04/26 12:25:42 author: cmdra ...

  9. Linux系统的一些基本文件和目录管理命令

    pwd:查看当前目录所在位置. ls:查看当前目录下的文件和目录.例如我们查看根目录下的文件和目录: (注:蓝字的是目录,白字的是文件,绿字的是可执行的文件或装有可执行文件的目录,红字是压缩包) 如果 ...

  10. 代码随想录第十三天 | Leecode 144. 二叉树的前序遍历、 94. 二叉树的中序遍历、 145. 二叉树的后序遍历

    Leecode 144. 二叉树的前序遍历 题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/ 题目描述 给你二叉树的根 ...