Rust模块的引入方式(一看就懂)

同文件内

在main.rs文件中

mod utils{
    pub fn add(x: u32, y: u32) ->u32{
        x+y
    }
}
fn main(){
    use self::utils::add;
    println!("{}",add(3, 4))
}

self表示自身模块

同级目录下

在这里插入图片描述
在utils.rs文件中

// utils.rs中
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

在main.rs中使用utils.rs文件中的add方法
方式1 这种方式在调用函数的时候比较麻烦,还需要在函数前加上模块名utils::add(3, 5),能直接方法名add()吗?当然可以,见方式2


mod utils;  
fn main() {
    let result = utils::add(3, 5);  // 调用 add 函数 
    println!("Result: {}", result);
}

方式2

mod utils;  

// 使用绝对路径的方式来引用  匹配根目录src/main.rs::文件名utils::utils模块名字::内部函数add
use crate::utils::add;

fn main() {
    let result = add(3, 5);  // 调用 add 函数
    println!("Result: {}", result);
}

同模块下多个函数调用

utils.rs

pub fn add(a: i32, b: i32) -> i32 {
    a + b
}
pub fn sub(a: i32, b: i32) -> i32 {
    a - b
}

当一个模块下有多个函数我们需要,难道我们要一个一个引入吗?当然不!!

方式一 * 导入所有

*代表导入该模块下所有暴露的内容,这种方式容易引起冲突,建议使用方式2

mod utils;  
use crate::utils::*;
fn main() {
    let add_res = add(3, 5);  // 调用 add 函数
    let sub_res = sub(5, 3);
    println!("Result: {},{}", add_res,sub_res);// 8 , 2 
}

方式二,命名引入

{}指定要导入的内容

mod utils;  
use crate::utils::{add,sub};

fn main() {
    let add_res = add(3, 5);  // 调用 add 函数
    let sub_res = sub(5, 3);
    println!("Result: {},{}", add_res,sub_res);
}

调用子目录下的模块

我们先看一下目录结构,现在我们想在main.rs中调用user.rs中的函数。
在这里插入图片描述在这里插入图片描述

-module
	-src
		main.rs
		-user
			mod.rs
			user.rs

文件src/user/user.rs

//user.rs
use std::collections::HashMap;
pub fn get_user_info<'a>()->HashMap<String, String>{
    let mut user:HashMap<String,String> = HashMap::new();
    user.insert("name".to_string(),String::from("uerss"));
    for i in 1..=5{
        print!("{}",i);
        user.insert(format!("json{}",i),format!("json{}",i));
    }
    user
}

在main.rs中我们如何调用呢?
1.在user/目录下创建mod.rs文件

pub mod user;

2.声明模块mod user;
3.导入模块中的要使用的use user::user::{get_user_info};

mod user;
use user::user::{get_user_info};
fn main() {
    let user_map = get_user_info();
    println!("{}",user_map.len());
    for user in user_map{
        println!("{:?}\n",user);
    }
}
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Rust是一种现代、安全、高效的系统级编程语言,具有内存安全和数据竞争自由的特性。Rust的路线图主要是指其未来发展的计划和目标。 首先,在语言方面,Rust计划通过稳定版本更新、语法改进和新特性的引入来提升编程体验。例如,该语言团队计划逐步完善异步编程能力,并提供更好的工具和库来支持开发者进行异步编程。同时,Rust也将继续改进其模块化系统和泛型编程能力,以提供更强大的代码复用和抽象能力。 其次,在工具方面,Rust希望提供更好用的开发工具和集成开发环境(IDE),以提高开发者的效率。该语言团队计划改进Rust的编译器和调试器,提供更友好的错误信息和可靠的诊断能力。此外,Rust还将支持跨平台的构建工具和包管理器,以便更方便地使用第三方库和框架。 另外,Rust还会继续加强社区和生态环境的建设。Rust计划推动更多开源项目的使用Rust进行开发,并鼓励社区成员共享他们的经验和知识。语言团队还会持续改进和扩展Rust社区网站,提供更多的学习资源和文档,以帮助新手更快地上手。 最后,Rust还会在性能和可靠性方面持续努力。该语言团队会通过更好的编译器优化和运行时系统改进来提升Rust的性能。同时,他们还会关注和解决Rust在特定场景下的性能瓶颈和限制。 总之,Rust的路线图涉及了语言、工具、社区和性能等多个方面的发展计划,旨在进一步完善和提升这门编程语言的能力和易用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鲤余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值