gpt4 book ai didi

rust - 为什么我会收到错误 "no method named collect found for type Option"?

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

我正在做 Exercism Rust 字符串任意长度但可以为空的问题,需要根据最后两个字素对其进行分类。

我的理解是 Option 用于说明可能为 null 或可能不为 null 的内容,而这在编译时是未知的,所以我试过这个:

extern crate unicode_segmentation;

use unicode_segmentation::UnicodeSegmentation;

pub fn reply(message: &str) -> &str {
let message_opt: Option<[&str; 2]> = message.graphemes(true).rev().take(2).nth(0).collect();
}

我的理解是,如果字符串的长度不为零,则右侧将给出一个包含两个 &str 的数组,否则将返回 none,而左侧将将其存储为一个选项(以便我稍后可以匹配 SomeNone)

错误是:

no method named 'collect' found for type std::option::Option<&str> in the current scope

这对我来说没有意义,因为我(认为)我正在尝试收集迭代器的输出,我不是收集一个选项。

最佳答案

错误信息没有骗你。 Option 没有有一个叫做collect的方法吗? .

I (think) I'm trying to collect the output of an iterator

Iterator::nth 返回 Option . Option不执行 Iterator ;你不能调用collect在上面。

Option<[&str; 2]>

你也不能这样做:


我会这样写

let mut graphemes = message.graphemes(true).fuse();

let message_opt = match (graphemes.next_back(), graphemes.next_back()) {
(Some(a), Some(b)) => Some([a, b]),
_ => None,
};

关于rust - 为什么我会收到错误 "no method named collect found for type Option"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54297183/

24 4 0