Как использовать значение, которым владеет оператор соответствия в Rust? - PullRequest
0 голосов
/ 16 декабря 2018

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

Исправьте, если я ошибаюсь, но я не могу скопировать или клонировать значение 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 Ответ

0 голосов
/ 16 декабря 2018

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

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]),
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...