这段代码如下:
// 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变量(我假设,这是启动过程的环境中的变量)。
更新:我不知道我改变了什么,但它现在有效。我为打扰每个人的时间而道歉。谢谢你帮助我调查一下。
答案 0 :(得分:0)
取消删除此问题,因为我得到了答案。但这是因为在提出问题之前我没有检查所有因素。
当我运行cargo run
时它起了作用,但在我运行sudo cargo run
时却无效。我在sudo中运行它是因为我试图读取另一个进程的内存。 sudo
个人资料拥有自己的环境变量集,并在进入sudo之前重置环境。
要解决此问题,我运行sudo visudo
并插入此行
Defaults env_keep += "DISCORD_TOKEN'
从那里起,它奏效了。
This link给了我答案。