gpt4 book ai didi

rust - 如何解决预期的 `:` ,发现关键字 `self` ?

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

我正在学习用 Rust 编写迭代器,但遇到了一个“预期的冒号”问题,我认为冒号甚至没有意义。也许这与生命周期有关?引用?我尝试制作一个以相同方式返回相同数据的常规函数​​并且它有效(或至少通过了此错误消息)所以它似乎对 Iterator 特征来说是特殊的......但我无法弄清楚为什么。

struct LogEntry;

pub struct LogIter<'a> {
index0: bool,
first: LogEntry,
iter: ::std::slice::Iter<'a, LogEntry>,
}

impl<'a> Iterator for LogIter<'a> {
type Item = &'a LogEntry;
fn next(&mut self) -> Option<Self::Item> {
self.index0 = false;
match self.index0 {
true => Some(&'a self.first),
false => self.iter.next(),
}
}
}

它意味着返回 first 然后正常迭代,但我无法弄清楚为什么或如何在此处放置冒号。

error: expected `:`, found keyword `self`
--> src/lib.rs:14:30
|
14 | true => Some(&'a self.first),
| ^^^^ expected `:`

最佳答案

您的问题 已通过指出 &'a foo 不是有效表达式来解决。在获取引用时指定生命周期没有意义,因为编译器会自动确保正确的生命周期。

你想使用Some(&self.first)


您的问题已由How do I write an iterator that returns references to itself? 解决.

关于rust - 如何解决预期的 `:` ,发现关键字 `self` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404264/

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