Как вычесть одного персонажа из другого в Rust? - PullRequest
0 голосов
/ 08 февраля 2019

В Java я мог бы сделать это.

int diff = 'Z' - 'A'; // 25

Я попробовал то же самое в Rust:

fn main() {
    'Z' - 'A';
}

, но компилятор жалуется:

error[E0369]: binary operation `-` cannot be applied to type `char`
 --> src/main.rs:2:5
  |
2 |     'Z' - 'A';
  |     ^^^^^^^^^
  |
  = note: an implementation of `std::ops::Sub` might be missing for `char`

Как я могу сделать эквивалентную операцию в Rust?

1 Ответ

0 голосов
/ 08 февраля 2019

Операция не имеет смысла в мире Юникода и едва ли когда-либо имеет смысл в мире ASCII, поэтому Rust не предоставляет ее напрямую, но есть два способа сделать это в зависимости от вашего варианта использования:

  • Приведите символы к их скалярному значению: 'Z' as u32 - 'A' as u32
  • Используйте литералы байтовых символов: b'Z' - b'A'
...