gpt4 book ai didi

rust - 在函数的输出或变量上使用 as_str 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 17:09:39 47 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why do I get "does not live long enough" in a return value?

(2 个回答)



Why can't I call a method with a temporary value?

(2 个回答)


上个月关闭。




我正在编写一个 Rust 函数来从文件中获取配置,这是函数:

pub fn getConfig(key: &str) -> String {
let mut settings = config::Config::default();
settings.merge(config::File::with_name("settings")).unwrap()
.merge(config::Environment::with_prefix("APP")).unwrap();
let hashConfig = settings.try_into::<HashMap<String, String>>().unwrap();
let conn = hashConfig.get(key).unwrap();
let std =String::from(conn);
return std;
}
当我像这样使用这个函数时:
fn main() {
let config = getConfig("key");
let conf = config.as_str();
print!("{}",config)
}
它工作正常。但是当我使用这样的函数时:
fn main() {
let config = getConfig("key").as_str();
print!("{}",config)
}
它显示一个错误:
error[E0716]: temporary value dropped while borrowed
--> src/main.rs:30:18
|
30 | let config = getConfig("key").as_str();
| ^^^^^^^^^^^^^^^^ - temporary value is freed at the end of this statement
| |
| creates a temporary which is freed while still in use
31 | print!("{}",config)
| ------ borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
有什么区别?为什么要先写入变量?为什么不应该使用 as_str直接在函数之后?

最佳答案

GetConfig返回 拥有然后你用 as_ref 引用的值.但问题是没有真正拥有它,因此引用无效。你想要一个变量到 自己的 值,稍后您可以获得对已拥有的该值的引用。

关于rust - 在函数的输出或变量上使用 as_str 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69756316/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com