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