我正在尝试为vector创建一个自定义迭代器:
struct FriendsOnly { all: Vec<Person> } impl FriendsOnly { pub fn iter(&self) -> Iter<Person> { // return an iterator of all Person where p.is_friend() returns true } }
Rust中的规范方法是什么?
rryofs0p1#
下面是一个示例,说明您可以执行的操作。使用impl Iterator以更灵活的方式指定返回类型。
use std::slice::Iter; struct Person { pub name: String, } impl Person { pub fn is_friend(&self) -> bool { true } } struct FriendsOnly { all: Vec<Person>, } impl FriendsOnly { pub fn iter(&self) -> impl Iterator<Item= &Person> { self.all.iter().filter(|p| p.is_friend()).into_iter() } }
1条答案
按热度按时间rryofs0p1#
下面是一个示例,说明您可以执行的操作。使用impl Iterator以更灵活的方式指定返回类型。