在我的示例中,我获取一个环境变量并将其传递到 Reqwest 标头中:
let token: String = String::from(
env::var("TOKEN").expect("TOKEN must be set!"),
);
let mut headers: HeaderMap = HeaderMap::new();
headers.insert(
AUTHORIZATION,
HeaderValue::from_static(&format!("Bearer {}", token)),
);
我认为我什至不需要
String::from
,但我希望能够复制该字符串,而不是从 env::var
借用它。
编译器返回此错误:
借用时暂时价值下降
创建一个临时值,该值在仍在使用时被释放
对于
&format!("Bearer {}", token)
,据我了解,这是因为 String 需要是静态的。 如果不使用像lazy_static
这样的库,有没有办法可以更好地做到这一点?
HeaderValue
实现了 TryFrom<String>
,因此您可以使用 try_into
进行转换。
headers.insert(
AUTHORIZATION,
format!("Bearer {}", token).try_into().expect("invalid characters"),
);
OnceLock
将其设为静态,但这不是必需的,除非您多次创建此 HeaderMap
。