gpt4 book ai didi

rust - 值要在整个函数范围内存在

转载 作者:行者123 更新时间:2023-11-29 08:12:29 25 4
gpt4 key购买 nike

Rust 提示 get_string 的生命周期不够长。它似乎想在整个函数范围内保持事件状态,但我看不出这是怎么发生的。

error: `get_string` does not live long enough
--> src\lib.rs:7:23
|
7 | for value_pair in get_string.split('&') {
| ^^^^^^^^^^ does not live long enough
...
19 | }
| - borrowed value only lives until here
|
note: borrowed value must be valid for the anonymous lifetime #1 defined on the body at 3:59...
--> src\lib.rs:3:60
|
3 | fn parse_get(get_string: &str) -> HashMap<&str, Vec<&str>> {
| ^

use std::collections::HashMap;

fn parse_get(get_string: &str) -> HashMap<&str, Vec<&str>> {
let get_string = String::from(get_string);
let mut parameters: HashMap<&str, Vec<&str>> = HashMap::new();

for value_pair in get_string.split('&') {
let name = value_pair.split('=').nth(0).unwrap();
let value = value_pair.split('=').nth(1).unwrap();

if parameters.contains_key(name) {
parameters.get_mut(name).unwrap().push(value);
} else {
parameters.insert(name, vec![value]);
}
}

parameters
}

最佳答案

您正在此处复制输入 &str:

let get_string = String::from(get_string);

此副本由函数拥有,将在函数完成时删除,但您还返回了一个包含对它的引用的 HashMap。应该清楚为什么那行不通。

删除这一行实际上会修复错误,因为您将改为引用函数的参数。

关于rust - 值要在整个函数范围内存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432722/

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