ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Rust问答】跨模块如何共享变量

【Rust问答】跨模块如何共享变量

原创 数据库开发技术 作者:Rust语言中文社区 时间:2019-12-11 10:50:52 0 删除 编辑

我有一个cli程序, 我在main函数中拿到用户传递的参数token, 然后我在lib.rs里面的好多函数都要用到这个参数token, 我想通过参数传递的方式好像有点繁琐, 请问各位大佬有没有优雅的方案😊

main.rs

fn main() {
let token = get_token_from_user_input();
}

lib.rs

pub mod A {
pub fn a(token: String, another_parameter: String) {}
pub fn b(token: String, another_parameter: u8) {}
}
pub mod B {
pub fn a(token: String, another_parameter: i32) {}
pub fn b(token: String, another_parameter: u16) {}
}


----

BBDXF 2019-12-03 17:15

共享内存


c5soft 2019-12-03 17:19

单独写一下get/set token的mod, 在需要的地方引用即可


jmjoy 2019-12-03 18:57

写个struct包含这个Token,那些函数都作为他的方法。 数据驱动还是好用的。


作者 ilp64 2019-12-03 20:04

谢谢各位大佬,用了jmjoy大佬推荐的struct的方法😊


zengql 2019-12-05 17:51

不同的模块怎么用的这个struct,没想到


作者 ilp64 2019-12-06 13:10

哦,我这个是相当于只需要在main和模块里面共享,不需要模块和模块共享,所以就用了下面这种方法

main.rs

use project::Ha;

fn main() {
let h = Ha::new(String::from("token"));
h.a();
}

lib.rs

pub struct Ha {
token: String
}

impl Ha {
pub fn new(token: String) -> Ha {
Ha {
token
}
}
pub fn a(&self) {
println!("{}", self.token)
}
}


原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718485