创建一个用目录分层的Rust应用
一:前言,这是Rust基础程序,主要是用来讲解怎么创建分层(类似Java package)的应用;
二:代码实现:
2.1在src下创建main.rs,然后声明main方法,代码如下:
fn main() { let fruits = ["mango", "apple", "banana", "litchi", "watermelon"]; for f in fruits.iter() { print!("{} ", f); } }
2.1接着我们需要在main里引用一个类似Java aa.bb.Uu的类,并调用它的某个方法(和Java不同的是Rust更像C++/kotlin不是所有方法都必须在类里,“包”中也可以有方法实现)
,步骤如下:在src下创建common目录,在common目录里创建mod.rs(mod.rs是很特殊的文件名字,在里面可以定义属于common“包”[其实叫mod,即module]的方法实现,同时它还负责引出属于common“包”下的其他“子包”;
在mod.rs里添加代码:
// 这里用pub mod的意义在于其他地方比如main.rs里mod common;后可以use common::uks; pub mod uks; // 这里也可以有方法定义,这样这个方法就是在common这个"包"里【Java概念】 pub fn test() { println!("hello"); }
注意上面的pub mod uks;很重要,表示uks可以在其他地方通过common mod来引用,而test方法则直接属于common这个mod;
接着在common目录下添加uks.rs,其代码为:
// 默认是私有的,其他module无法访问 pub fn add(a: i64, b: i64) -> i64 { a + b }
现在main.rs里就可以使用uks和common的mod了,代码如下:
mod common; use common::uks::add;
在main方法里就可以直接add(1, 3)来调用了,如果没有用use(use类似静态导入,mod类似普通导入),那么就必须common::uks::add(1, 3)来使用,
如果是use common::uks;那么可以uks::add(1, 3),注意不能use common;因为mod common;已经导入了不能重复导入【但是不能省略mod common;而用use common;也会报错】
posted on 2019-09-23 15:45 Silentdoer 阅读(1536) 评论(0) 编辑 收藏 举报