gpt4 book ai didi

return - 有效地获取借用引用的所有权以从函数返回

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

<分区>

我正在尝试编写一个简单的 prompt 函数,它返回一个没有尾随换行符的输入字符串,但我无法返回我的结果,因为 input 没有活得够久。我知道 String::trim_right_matches 正在返回对 input: String 的一部分的借用引用,但我不知道如何取得此数据的所有权或复制它以某种方式归还它。

虽然我已经了解到这种“与借用检查器战斗”是 Rust 新手的成人礼,但我已经旋转了几个小时,但没有运气,所以我想我并不孤单。

use std::io;
use std::io::Write;

fn main() {
println!("you entered: {}", prompt("enter some text: "));
}

fn prompt(msg: &str) -> &str {
print!("{}", msg);

io::stdout().flush()
.ok()
.expect("could not flush stdout");

let mut input = String::new();

io::stdin()
.read_line(&mut input)
.expect("failed to read from stdin");

input.trim_right_matches(|c| c == '\r' || c == '\n')
}

直觉告诉我我需要 fn prompt(prompt: &str) -> str 而不是 -> &str,但我没能做到这一点以编译器接受的方式。

error: `input` does not live long enough
--> src/main.rs:22:5
|
22 | input.trim_right_matches(|c| c == '\r' || c == '\n').clone()
| ^^^^^ does not live long enough
23 | }
| - borrowed value only lives until here
|
note: borrowed value must be valid for the anonymous lifetime #1 defined on the block at 9:32...
--> src/main.rs:9:33
|
9 | fn prompt(msg: &str) -> &str {
| ^

error: aborting due to previous error

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