该树还显示,一些模块彼此是兄弟姐妹,这意味着它们在同一个模块中定义;hosting和serving是被定义在front_of_house中的兄弟姐妹。如果模块 A 包含在模块 B 内部,我们说模块 A 是模块 B 的子模块,而模块 B 是模块 A 的父模块。注意,整个模块树的根位于名为crate的隐含的模块下。 引用模块树中项的路径(path) ...
use clap::Parser; use indicatif::ProgressBar; use std::fs::File; use std::io::{self, BufRead, Write}; use std::path::PathBuf; use std::thread; use std::time::Duration; #[derive(Parser)] struct Cli { /// 要查找的模式 pattern: String, /// 要读取的文件的路径 path: PathBuf, ...
在下面的示例代码中,crate::shapes::circle::Area表示从crate根开始的shapes子模块、circle子目录的Area函数。 use crate::shapes::circle::Area; 相对路径:直接使用模块名称表示同级模块,或者相对于当前模块的子模块。有两个特殊的标识需要记住,self::表示当前模块,super::表示当前模块的父模块。 // 在shapes/mod...
模块(modules)和use: 让你控制作用域和路径的私有性 路径(path): 命名结构体, 函数或者模块的方式 包和crate# crate 是一个二进制或者库, crate root 是一切的开始, 编译器认为他是起始点, 并构成你的 crate 根模块 包 是提供一系列功能的一个或者多个 crate, 一个包会包含一个cargo.toml文件, 里面描述了...
包、create 通过拆解模块来创建多个文件组织代码。更好的重用代码,定义哪些内容可以公开,哪些是私有的。 这里有一些概念: 包- Cargo 的一个功能,允许构建、测试和分享 crate。 crates- 一个模块的树形结构,它形成了库或者二进制项目。 模块/use- 允许控制作用域和路径的私有性。
crate相当于根 '/',当前包的根路径,配合use关键字可以引入绝对路径。 super相当于 ‘../’,当前模块的上一级路径。 self相当于 './',就表示当前模块,通常省略。 2. 文件或文件夹表示模块 要把文件或文件夹作为模块,需要在lib.rs/main.rs/mod.rs文件中进行声明,例如在/json/src/lib.rs中声明了三个模块...
// mod_within.rsmodfood{structCake;structSmoothie;structPizza;}usefood::Cake;fnmain(){leteatable...
「use」: use关键字用于「将模块或模块中的项引入当前作用域」,这样我们就可以直接使用它们而不需要前缀。 上面代码引入了content模块中的project,utils模块中的logger,以及当前包中的project::CreationOptions。 引入第三方库 use anyhow::Result; use clap::{ Parser, Subcommand, ValueEnum, builder::{EnumValuePar...
其中有一个原因就是 Rust 中的一些概念,与其他编程语言对比的时候,经常似是而非。即其他语言也有类似的概念,但是只是相似,并不能看成一致。 很多人在学习 Rust 的时候,会下意识跟自己其他语言的经验类比。如 cargo 和 pip,use 和 import,trait 和 interface ,crate 和 package 等等。但是这些内容 rust 都有自...
1.Rust的第一类错误处理模式:忽略错误,不处理错误: (1) unwrap() 在Rust 中,unwrap() 方法用于从 Result 类型中提取成功时的返回值。如果 Result 类型的值是 Ok(表示成功),则 unwrap() 方法将返回 T;如果 Result 类型的值是 Err(表示失败),则 unwrap() 方法将触发一个 panic,抛出一个 E 类型的错误。