Доходность внутри двух функций

Это похоже на компиляцию, но это очень уродливо. Есть ли способ упростить это?

enum Foo<'a> {
    Foo1(Option<&'a mut Foo<'a>>),
    Foo2(i16),
}

impl<'a> Foo<'a> {
    fn bar(&'a mut self, y: i16) -> (i16, &'a mut Foo<'a>) {
        match (&mut *self, y) {
            (Foo::Foo1(Some(ref mut a)), b) if (b == 5) => {
                return a.bar(y)
            },

            (self2, c) => {
                let n = match (&mut *self2 , c) {
                    (Foo::Foo2(ref mut a), b) if (b == 5) => {
                        print!("is five");
                        *a = (b + 42) as i16;

                        *a * b
                    },

                    ref mut x => {
                        print!("is not five!");
                        y
                    }
                };

                return (n, self2)
            }
        }
    }
}
0
задан toothpick 19 January 2019 в 00:17
поделиться

1 ответ

Просто замените return в вашем get_all_files на yield. Это позволит вам перебирать каждый файл.

def get_all_files(to_download):
    for year in [2000, 2001, 20002, 2003]:
        content = download_file(year)
        result = retrieve_file(content,
                               to_download,
                               'file-%s.pdf' % year)
        yield result
0
ответ дан SethMMorton 19 January 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: