我有一个cli程序, 我在main
函数中拿到用户传递的参数token
, 然后我在lib.rs
里面的好多函数都要用到这个参数token
, 我想通过参数传递的方式好像有点繁琐, 请问各位大佬有没有优雅的方案?
main.rs
代码语言:javascript复制fn main() {
let token = get_token_from_user_input();
}
lib.rs
代码语言:javascript复制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
代码语言:javascript复制use project::Ha;
fn main() {
let h = Ha::new(String::from("token"));
h.a();
}
lib.rs
代码语言:javascript复制pub struct Ha {
token: String
}
impl Ha {
pub fn new(token: String) -> Ha {
Ha {
token
}
}
pub fn a(&self) {
println!("{}", self.token)
}
}