Владение и время жизни во вложенных итераторах в ржавчине для сравнения строк

Эта проблема возникает, если конфигурация user не работает в вашем kubeconfig, или если вы находитесь на стихе кубернетов меньше, чем v1.10

0
задан gfgm 18 January 2019 в 18:45
поделиться

1 ответ

Проблема с кодом, как таковая, на самом деле не очень связана с Rust, но вы потребляете читателей, когда читаете их. Ваш код в основном делает (в псевдокоде):

file1 = open("file1");
file2 = open("file2");
for line1 in read_lines(file1):
    for line2 in read_lines(file2):
        compare(line1, line2)

С file1 все в порядке, так же как и с file2 при первом чтении. Но во второй итерации внешний цикл file2 находится в конце файла, поэтому из него больше не будут считываться строки, и цикл заканчивается.

Самое простое решение - читать file2 каждый раз:

file1 = open("file1");
for line1 in read_lines(file1):
    file2 = open("file2");
    for line2 in read_lines(file2):
        compare(line1, line2)

Это не очень эффективно, потому что вы читаете один и тот же файл снова и снова.

Если вы хотите прочитать его только один раз, вы можете собрать все Records из file2 в Vec, а затем повторить Vec столько раз, сколько необходимо:

[112 ]
0
ответ дан rodrigo 18 January 2019 в 18:45
поделиться
Другие вопросы по тегам:

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