无法访问Rust

时间:2016-11-15 07:15:35

标签: rust environment-variables rust-cargo

这段代码如下:

// Log in to Discord using a bot token from the environment                  
let discord = Discord::from_bot_token(                                       
    &env::var("DISCORD_TOKEN").unwrap()                                      
).expect("login failed");

我收到错误消息,说它无法找到环境变量DISCORD_TOKEN

我的环境确实显示变量:

myawesomename$env | grep DISCORD
DISCORD_TOKEN=you'llneverknow

如果我打印Rust知道的所有键和值:

for (key, value) in env::vars() {                                            
    println!("{}: {}", key, value);                                      
}

它没有显示环境变量。

在类似的说明中,当我执行env | grep CARGO时,没有任何CARGO变量存在,但它们是在Rust代码中打印的。

我从根本上不了解Rust正在查看的配置文件/系统env变量(我假设,这是启动过程的环境中的变量)。

更新:我不知道我改变了什么,但它现在有效。我为打扰每个人的时间而道歉。谢谢你帮助我调查一下。

1 个答案:

答案 0 :(得分:0)

取消删除此问题,因为我得到了答案。但这是因为在提出问题之前我没有检查所有因素。

当我运行cargo run时它起了作用,但在我运行sudo cargo run时却无效。我在sudo中运行它是因为我试图读取另一个进程的内存。 sudo个人资料拥有自己的环境变量集,并在进入sudo之前重置环境。

要解决此问题,我运行sudo visudo并插入此行

Defaults env_keep += "DISCORD_TOKEN'

从那里起,它奏效了。

This link给了我答案。