在Java中,我可以做到这一点.

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

我也试过同样的方法:

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 的情况下进行同样的操作?

推荐答案

该操作在Unicode世界中毫无意义,在ASCII世界中几乎没有意义,这就是Rust不能直接提供它的原因,但根据您的使用情况,有两种方法可以做到这一点:

  • 将字符强制转换为其标量值:'Z' as u32 - 'A' as u32
  • 使用字节字符:b'Z' - b'A'

Rust相关问答推荐

Rust,polars CSV:有没有一种方法可以从impll BufRead(或任何字节迭代器)中读取CSV?

Tauri tauri—apps/plugin—store + zustand

rust 蚀将动力特性浇到混凝土 struct 上是行不通的

从特征实现调用函数的Rust惯用方法

Box::new()会从一个堆栈复制到另一个堆吗?

有没有办法避免在While循环中多次borrow `*分支`

我可以在不收集或克隆的情况下,将一个带有Item=(key,val)的迭代器拆分成单独的key iter和val iter吗?

`RwLockWriteGuard_,T`不实现T实现的特征

什么时候使用FuturesOrdered?

如何对一个特征的两个实现进行单元测试?

带引脚和不带引脚的比较功能

如何在 Rust 中编写一个通用方法,它可以接受任何可以转换为另一个值的值?

我们可以在 Rust 切片中使用步骤吗?

如何在 Rust 的 Hyper 异步闭包中从外部范围正确读取字符串值

bcrypt 有长度限制吗?

LinkedList::drain_filter::drop 中 DropGuard 的作用是什么?

带有库+多个二进制文件的Cargo 项目,二进制文件由多个文件组成?

类型组的通用枚举

有没有办法使用 NASM 语法进行内联汇编?

加入动态数量的期货