< 返回版块

ilp64 发表于 2019-12-03 16:56

Tags:share variable,mod

我有一个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) {}
}

评论区

写评论
作者 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)
    }
}

对以下内容的回复:

zengql 2019-12-05 17:51

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

对以下内容的回复:

作者 ilp64 2019-12-03 20:04

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

jmjoy 2019-12-03 18:57

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

c5soft 2019-12-03 17:19

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

BBDXF 2019-12-03 17:15

共享内存

1 共 6 条评论, 1 页