You need to enable JavaScript to run this app. Rust中单引号与双引号的区别及字节字面量编译报错问题解析
优惠活动
大模型
产品
解决方案
定价
更多

Rust中单引号与双引号的区别及字节字面量编译报错问题解析

Rust 字节前缀引号的使用差异说明

核心类型差异

你遇到的编译错误本质是两种带b前缀的引号语法生成的类型不匹配:

  • b'#'(单引号包裹)是字节字符字面量,代表单个ASCII字符对应的字节值,类型为u8,和你代码中vec[j_pointer].as_bytes()[i_index]取到的单个字节类型完全匹配,所以可以直接比较,编译正常。
  • b"#"(双引号包裹)是字节字符串字面量,代表固定长度的字节数组的不可变引用,此处的类型为&[u8; 1],和u8类型不属于同一类型,因此编译器会抛出expected u8, found &[u8; 1]的类型错误。

补充常规引号规则

无b前缀的普通引号规则和上述逻辑一致:

  • 单引号'包裹的是字符字面量,类型为char,代表单个Unicode标量值,内存占4字节
  • 双引号"包裹的是字符串字面量,类型为&str,是UTF-8编码的字符串切片引用

可选兼容写法

如果你坚持要使用b"#"写法,只需要取字节数组的第一个元素即可完成匹配,修改判断逻辑为:

if character == tree[0] {
    tree_counter += 1
}

不过从语义合理性来说,直接使用字节字符字面量b'#'是更符合场景的写法。


内容的提问来源于stack exchange,提问作者Mlengcivil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 02:12:03