gpt4 book ai didi

rust - 在 Rust 中读取字符串并将其解析为迭代器的函数

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

有没有一种方法可以编写如下所示的函数:

fn read_and_iter_u32_line<'a>(mut buf: String) -> Iterator<Item=u32> {
buf.truncate(0);
io::stdin().read_line(&mut buf).unwrap();
buf.split_whitespace()
.map(|s| s.parse::<u32>().unwrap())
}

最佳答案

迭代器是惰性的。这意味着它们正在操作的数据需要与迭代器本身一样存在,但是当函数返回时 buf 不再存在。如果我们将 buf 保留更长时间,它就可以正常工作。

目前编写返回复杂迭代器的函数很棘手,但这是可能的:

use std::io;
use std::iter::{Iterator, Map};
use std::str::SplitWhitespace;

fn read_and_iter_u32_line(buf: &mut String) -> Map<SplitWhitespace, fn(&str) -> u32> {
buf.truncate(0);
io::stdin().read_line(buf).unwrap();
buf.split_whitespace().map(parse)
}

fn parse(s: &str) -> u32 {
s.parse::<u32>().unwrap()
}

关于rust - 在 Rust 中读取字符串并将其解析为迭代器的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765248/

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