bar: Option<String>,
baz: Option<String>,
bak: Option<String>,
bua: u64,
}
impl Foo {
fn vals(&self) -> Vec<&String> {
self.bar
.iter()
.chain(self.baz.iter())
.chain(self.bak.iter())
.collect()
}
}
есть способ получше? предполагается что у структуры большое кол-во полей с одинаковыми типами. можно ли это как то макросами обойти, когда таких структур много, и для каждой impl писать с чейнами лениво ))))
Какая-то такая идея есть [bar, bak, baz].into_iter().filter_map(|arg| *arg).collect()
без тайп алиасов это будет очень больно
Ну можно и Box<dyn Iterator<Item = &'a str>> возращать, если очень хочется
Обсуждают сегодня