Rust 如何将切片与字节字符串文字进行比较?

Rust 如何将切片与字节字符串文字进行比较?,rust,Rust,我有一个方法试图将[u8]的一个片段与多个字节字符串文本相匹配: pub(crate) fn from_slice(slice: &[u8]) -> Option<SqlStateCode> { match slice { b"3030303030" => Some(SqlStateCode::SuccessfulCompletion), b"3031303030" => Some(Sq

我有一个方法试图将[u8]的一个片段与多个字节字符串文本相匹配:

pub(crate) fn from_slice(slice: &[u8]) -> Option<SqlStateCode> {
    match slice {
      b"3030303030" => Some(SqlStateCode::SuccessfulCompletion),
      b"3031303030" => Some(SqlStateCode::Warning),
      b"3031303043" => Some(SqlStateCode::DynamicResultSetsReturned),
      _=> None
    }
}

有没有一种方法可以让这个字面值起作用?

您的字节字符串字面值不正确;字节sting literal
b“3031303043”
不对应于片
[30,31,30,30,43]
,而是对应于片
[51,48,51,49,51,48,48,52,51]

这是因为文字中的每个字符在片中都替换为其ASCII值


使用十六进制转义序列作为控制字符的
[30,31,30,30,43]
对应的字节字符串文字将是
b“\x1E\x1F\x1E\x1E+”

您的字节字符串文字不正确;字节sting literal
b“3031303043”
不对应于片
[30,31,30,30,43]
,而是对应于片
[51,48,51,49,51,48,48,52,51]

这是因为文字中的每个字符在片中都替换为其ASCII值

使用十六进制转义序列作为控制字符的
[30,31,30,30,43]
对应的字节字符串文字将是
b“\x1E\x1F\x1E\x1E+”

[30, 31, 30, 30, 43] => Some(SqlStateCode::DynamicResultSetsReturned)