Как использовать значение, которым владеет оператор соответствия в Rust?

Мое намерение состоит в том, чтобы соответствовать значению каждой строки в текстовом файле. Если значение соответствует строке, соответствующий код операции должен быть помещен в вектор. В противном случае я хочу добавить само значение в вектор. Само значение не может быть использовано, потому что оно принадлежит другой области.

Правильно будет, если я ошибаюсь, но я не могу скопировать или клонировать значение line потому что он не реализует правильные черты. Какое лучшее решение заимствовать значение в операторе сопоставления, а затем использовать его в качестве значения по умолчанию (_) в случае, если он не соответствует ни одной строке?

let buffered = BufReader::new(input);

for line in buffered.lines() {
    match line.unwrap().as_ref() {
        "nop" => instructions.push(0x00),
        "push" => instructions.push(0x01),
        "print" => instructions.push(0x02),
        "add" => instructions.push(0x03),
        "halt" => instructions.push(0xff),
        _ => instructions.push(line.unwrap().as_bytes()[0]),
    }
}

1 ответ

Решение

Используйте произвольное значение вместо _, Утверждение теперь выглядит так:

for line in buffered.lines() {
    match line.unwrap().as_ref() {
        "nop" => instructions.push(0x00),
        "push" => instructions.push(0x01),
        "print" => instructions.push(0x02),
        "add" => instructions.push(0x03),
        "halt" => instructions.push(0xff),
        x => instructions.push(x.as_bytes()[0]),
    }
}
Другие вопросы по тегам